我的.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
添加L
指令,例如RewriteRule ^post/(.*)$ index.php?post=$1 [L,NC]
L
意思是最后,即如果重写规则匹配,它将停止处理下一个规则......
仅仅添加[L]
标志是不够的,因为重写会循环进行,直到不再发生重写。
有很多方法 - 这是其中一种(考虑到您的示例规则,可能是最好的一种)。
# 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]