2010-06-28 119 views
2

我有一個看起來像這樣的超鏈接:如何讓瀏覽器在重寫時顯示乾淨的URL?

http://domain.com/sample/comments/65 

當我點擊它,它進入這個:

http://domain.com/sample/comments/index.php?submissionid=65 

我使用重寫規則,使之做到這一點。這是我想要的,除了我還希望瀏覽器中顯示的URL仍然看起來像「http://domain.com/sample/comments/65」。

我該怎麼做? .htaccess文件顯示在下面。

RewriteEngine on 
RewriteRule ^comments/([0-9]+)?$ http://domain.com/sample/comments/index.php?submissionid=$1 [NC,L] 

由於提前,

約翰

回答

1

您必須刪除部分http://domain.com/sample/,否則將強制重定向:

RewriteEngine on 
RewriteRule ^comments/([0-9]+)?$ comments/index.php?submissionid=$1 [NC,L,B] 

B標誌也是必要的,因爲你」重新使用查詢字符串內的反向引用,這需要轉義。

manual說(重點煤礦):

當使用.htaccess中的重寫引擎文件的每個目錄前綴(始終是爲特定的目錄相同)是模式匹配自動刪除並在替換完成後自動添加。這個功能對於許多重寫都很重要;沒有這個,你總是必須匹配父目錄,這並不總是可能的。 有一個例外:如果替換字符串以http://開頭,則不會添加目錄前綴,並且外部重定向(或使用標誌P時的代理吞吐量)被強制爲。有關更多信息,請參閱RewriteBase指令。

只要請求主機和重寫規則中的主機相匹配,如果將重寫規則放在虛擬主機或主配置中,則不會出現這種情況。