2012-03-03 103 views
0

此重寫規則工作不工作(標識重定向後是空的),而這個人做htaccess並不在兩個幾乎相同的情況下

RewriteRule ^album/([0-9]+)$ album.php?id=$1 [L,QSA] 

RewriteRule ^album([0-9]+)$ album.php?id=$1 [L,QSA] 

移除的斜槓唯一的區別。

+1

你想匹配什麼網址? – dotoree 2012-03-03 18:55:46

+0

我想匹配'album/12'。我不知道爲什麼第一個規則不起作用,而另一個匹配album12的作品。 – boreq 2012-03-03 19:09:33

+0

您是否嘗試將'album.php?id = $ 1'改爲'album.php \?id = $ 1'?我對.htaccess知之甚少,但我有一種感覺,你需要逃脫。 – Jack 2012-03-03 19:27:36

回答

1

這與多視圖有關。多視圖繞過你重寫規則,因爲它匹配/album/...到現有文件album.php

您可以通過將Options -MultiViews添加到您的htaccess來防止此問題。

0

這與處理.htaccess文件中的mod_rewrite規則的方式有關。基本上,RewriteRule的輸入只是路徑的「文件」部分,所以當URL是.../album/42時,RewriteRule將與42匹配。

解決方案也是使用RewriteCondition。類似於:

RewriteCond %{REQUEST_URI} (.*)/album/([0-9]+)$ 
RewriteRule^%1/album.php?id=%2 [L,QSA] 
相關問題