我的.htaccess
文件
RewriteRule ^post/(.*)$ index.php?post=$1 [NC]
RewriteRule ^(.*)$ index.php?page=$1 [NC]
我希望它重写(例如)mysite.com/x
到mysite.com/index.php?page=x
,但mysite.com/post/x
重写为mysite.com/index.php?post=x
除外,但不起作用。
答案 0 :(得分:4)
添加L
指令,例如RewriteRule ^post/(.*)$ index.php?post=$1 [L,NC]
L
意思是最后一次,即如果重写规则匹配,它将停止处理下一个规则......
答案 1 :(得分:1)
只添加[L]
标志是不够的,因为重写会循环进行,直到不再发生重写为止。
RewriteRule Last [L] flag not working?
有很多方法 - 这里有一个(考虑你的例子规则,可能是最好的方法)。
# do not do anything for index.php (already rewritten URLs)
RewriteRule ^index\.php$ - [L]
# my rewrite rules
RewriteRule ^post/(.*)$ index.php?post=$1 [NC,L]
RewriteRule ^(.*)$ index.php?page=$1 [NC,L]