0

我的.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

4

2 回答 2

4

添加L指令,例如RewriteRule ^post/(.*)$ index.php?post=$1 [L,NC]

L意思是最后,即如果重写规则匹配,它将停止处理下一个规则......

于 2012-04-23T11:04:05.700 回答
0

仅仅添加[L]标志是不够的,因为重写会循环进行,直到不再发生重写。

RewriteRule Last [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]
于 2012-04-23T13:58:42.167 回答