第一次重写规则覆盖其余部分

时间:2013-01-29 15:18:46

标签: apache .htaccess mod-rewrite

对于那些比我更了解mod-rewrite的人来说,快速提问:

我有一些按顺序编写的规则:

RewriteRule ^(en|fr) index.php?page=home&lang=$1 [L]
RewriteRule ^(en|fr)/home index.php?page=home&lang=$1 [L]
RewriteRule ^(en|fr)/terms index.php?page=terms&lang=$1 [L]
然而,第一个看起来似乎超过了其余部分。

我已尝试取消[L],但这并不符合我的预期,也绝不会显示“条款”页面。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您希望http://www.example.com/enhttp://www.example.com/fr/(带或不带斜杠)重定向到第一项,请将第一个规则更改为:

RewriteRule ^(en|fr)/?$ index.php?page=home&lang=$1 [L]

/?匹配是否有斜杠,而$表示"匹配网址的末尾" (如果URL继续,请不要匹配。)