2012-03-03 64 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] 
相关问题