此重写规则无效(重定向后id为空):
RewriteRule ^album/([0-9]+)$ album.php?id=$1 [L,QSA]
虽然这个:
RewriteRule ^album([0-9]+)$ album.php?id=$1 [L,QSA]
删除的斜线是唯一的区别。
答案 0 :(得分:1)
这与多视图有关。多视图会绕过您重写规则,因为它会将/album/...
与现有文件album.php
匹配
您可以通过向{htaccess}添加Options -MultiViews
来阻止此操作。
答案 1 :(得分:0)
这与处理.htaccess文件中的mod_rewrite规则的方式有关。基本上,RewriteRule的输入只是路径的“文件”部分,因此当网址为.../album/42
时,RewriteRule
将与42
匹配。
解决方案是使用RewriteCondition
。类似的东西:
RewriteCond %{REQUEST_URI} (.*)/album/([0-9]+)$
RewriteRule ^ %1/album.php?id=%2 [L,QSA]