此重写规则工作不工作(标识重定向后是空的),而这个人做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