此重寫規則工作不工作(標識重定向後是空的),而這個人做htaccess並不在兩個幾乎相同的情況下
RewriteRule ^album/([0-9]+)$ album.php?id=$1 [L,QSA]
:
RewriteRule ^album([0-9]+)$ album.php?id=$1 [L,QSA]
移除的斜槓唯一的區別。
此重寫規則工作不工作(標識重定向後是空的),而這個人做htaccess並不在兩個幾乎相同的情況下
RewriteRule ^album/([0-9]+)$ album.php?id=$1 [L,QSA]
:
RewriteRule ^album([0-9]+)$ album.php?id=$1 [L,QSA]
移除的斜槓唯一的區別。
這與多視圖有關。多視圖繞過你重寫規則,因爲它匹配/album/...
到現有文件album.php
您可以通過將Options -MultiViews
添加到您的htaccess來防止此問題。
這與處理.htaccess文件中的mod_rewrite規則的方式有關。基本上,RewriteRule的輸入只是路徑的「文件」部分,所以當URL是.../album/42
時,RewriteRule
將與42
匹配。
解決方案也是使用RewriteCondition
。類似於:
RewriteCond %{REQUEST_URI} (.*)/album/([0-9]+)$
RewriteRule^%1/album.php?id=%2 [L,QSA]
你想匹配什麼網址? – dotoree 2012-03-03 18:55:46
我想匹配'album/12'。我不知道爲什麼第一個規則不起作用,而另一個匹配album12的作品。 – boreq 2012-03-03 19:09:33
您是否嘗試將'album.php?id = $ 1'改爲'album.php \?id = $ 1'?我對.htaccess知之甚少,但我有一種感覺,你需要逃脫。 – Jack 2012-03-03 19:27:36