.htaccess RewriteRule问题

时间:2010-01-19 15:38:16

标签: .htaccess mod-rewrite

这个rewriterule只重写了level.php并在尝试时 localhost / a / b / 115-aaa.html 将所有请求发送到level.php但是 localhost / a / b / 正在工作

为什么?

RewriteEngine On
RewriteRule ^(.*)\/(.*)-(.*).html$ page.php?page=$1&a=$2&b=$3 [QSA]
RewriteRule ^(.*)$ level.php?q=$1 [QSA]

1 个答案:

答案 0 :(得分:0)

如果您的第一条规则匹配,则转到page.php?page = foo& a = bar& b = 123。这将与您的规则和第二个规则匹配第二次匹配。您可以通过在.htacces文件中添加以下行来避免这种情况。

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([0-9]+)\-([a-zA-Z0-9]+)\.html$ page.php?page=$1&a=$2&b=$3 [L]
#Prevent the last rule to be applied to page.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ level.php?q=$1 [L]