<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^viewuserimage/(.*) index.php?viewuserimage=$1 [L]
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
</IfModule>
在这里你可以看到我的.htaccess文件。我想重写所有以viewuserimage / index.php开头的请求?..,而不处理下一个规则。如果我通过
/viewuserimage/test
输出:
index.php?page=index.php&viewuserimage=test
答案 0 :(得分:2)
我发现问题,当你执行viewuserimage
规则时,你调用index.php?viewuserimage=$1
,所以它会再次触发.htaccess,剩下的唯一规则是最后一个,所以它会连接。
我可以给你2个解决方案:
第一个
更改此
RewriteRule ^viewuserimage/(.*) index.php?viewuserimage=$1 [L]
要
RewriteRule ^viewuserimage/(.*) index.php?viewuserimage=$1 [END]
[END]
标志将停止,就像一个perma退出,不等于[L]
。 More info
第二个
更改此规则
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
要
RewriteRule ^(page1|page2|page3|pageAllowed)$ index.php?page=$1 [L,QSA]
在此规则中,您可以告知哪些页面是允许的,因此只有这些页面匹配并转到index.php?page=$1
。