如何对RewriteRule重定向使用异常?

时间:2012-04-23 10:57:19

标签: php apache .htaccess

我的.htaccess文件

中有以下内容
RewriteRule ^post/(.*)$ index.php?post=$1 [NC]
RewriteRule ^(.*)$ index.php?page=$1 [NC]

我希望它重写(例如)mysite.com/xmysite.com/index.php?page=x,但mysite.com/post/x重写为mysite.com/index.php?post=x除外,但不起作用。

2 个答案:

答案 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]