2016-10-13 144 views
0

我爲我的personnal網站(基本上是一個投資組合)製作了以下HTAccess文件。URL重寫和PHP代碼

# Error 
ErrorDocument 401 /error.php?id=401 
ErrorDocument 403 /error.php?id=403 
ErrorDocument 404 /error.php?id=404 
ErrorDocument 500 /error.php?id=500 

# Enable URL rewriting 
Options +FollowSymlinks 
RewriteEngine on 
RewriteOptions Inherit 

# Url rewrite for assets 
RewriteCond %{REQUEST_URI} !^/assets(/.*|)$ [NC] 
RewriteCond %{REQUEST_URI} !^/gallery(/.*|)$ [NC] 
RewriteRule ^.+$/[R=302,L] 

# Url rewrite for pages 
RewriteRule ^home$ index.php 
RewriteRule ^about$ about.php 
RewriteRule ^gallery/(.+)$ gallery.php?id=$1 
RewriteRule ^password/(.+)$ password.php?id=$1 
RewriteRule ^private/(.+)$ private_gallery.php?id=$1 
RewriteRule ^hidden/(.+)$ hidden_gallery.php?id=$1 
RewriteRule ^download/(.+)$ download.php?id=$1 
RewriteRule ^contact$ contact.php 

當我嘗試直接通過我的網絡瀏覽器訪問這些URL時,這很好用。

在我的HTMLPHP代碼中,我有這些舊的 URLS。我的意思是這些URL存在於我編寫HTAccess文件之前。

<a href="private_gallery.php?id=SomeGalleryId">Open this gallery</a> 

當用戶點擊此網址後,他將被重定向到

/private_gallery.php?id=SomeGalleryId 

,而不是

/private/SomeGalleryId 

有沒有辦法改變這種狀況不編輯我PHP/HTML代碼?

回答

1

你可以使用另一個重寫來匹配查詢字符串,並做301重定向...它可能會導致SEO專家對視;最好是有形式/private/SomeGalleryId中的網址HTML代碼和無形重定向到private_gallery.php?id=SomeGalleryId而不是解決這個方式,但...

RewriteCond %{REQUEST_URI} ^/private_gallery\.php$ 
RewriteCond %{QUERY_STRING} id=(\w+).* 
RewriteRule ^.*$ /private/%1 [R=301,L] 
+0

謝謝,如果它使搜索引擎優化工作得更好,我會編輯代碼。 – Manitoba