2012-08-09 99 views
0
Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^product/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([a-zA-Z]+)/$ product.php?id=$1&srl=$2&item=$3&page=$4&title=$5#titleProduct 

當我點擊f5按鈕進行刷新時,URL保持不變,它不會被重寫。我嘗試訪問「新」重新鏈接,但它不起作用。htaccess將不會重寫url

+0

您是否在您的主要conf文件中檢查了AccessFileName,如果它未設置爲其他內容? – Mamadum 2012-08-09 23:24:12

+0

目前我正在使用免費的網絡託管服務。我在哪裏可以找到這個文件? – 2012-08-09 23:29:58

+0

你可能無法訪問apache2配置文件。詢問您的提供商是否可以使用.htaccess文件。 – Mamadum 2012-08-09 23:35:41

回答

2

哇,這意味着我需要更新每一個文件的「新」重寫?所有文件都包含與「舊」鏈接不同的超鏈接。我想如果我寫一個.htaccess文件,所有的URL都會自動重寫。

您正在考慮瀏覽器重定向,即更改地址欄,重寫需要更好看的URL並在內部將URI重寫爲服務器可以理解的內容。請參閱this answer for a better explanation of this process的上半部分。

因此,如果瀏覽器實際請求product.php文件,然後重定向到假的漂亮的URL,則可以執行瀏覽器重定向。然後,瀏覽器將重新發送一個新的請求,看起來很漂亮的URL和服務器得到它,在內部重寫返回到php文件(你有的規則)。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /product\.php\?id=([^&]+)&srl=([^&]+)&item=([^&]+)&page=([^&]+)&title=([^&\ ]+) 
RewriteRule ^product.php$ /product/%1/%2/%3/%4/%5/ [L,R=301] 

這將需要/product.php\?id=123&srl=abc&item=qwerty&page=blah&title=something URI,並用301瀏覽器重定向到更好看的URL。那麼你的規則應該在內部重寫它。

無論如何,你真的應該改變你服務的鏈接到更好的URL,依靠mod_rewrite做兩端工作是真的效率低下。