我的.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/xmysite.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]