需要覆盖以前编写的重写规则

时间:2012-06-11 10:43:26

标签: regex .htaccess url-rewriting

我在htaccess文件中有一些重写规则。我还在进入它,所以我还有一些我不确定的事情。 基本上我希望所有页面(/注册页面除外)都像这样重写:http://www.example.com/about - > http://www.example.com?page=about

为了做到这一点,我写了这条规则:

RewriteRule ^([a-z-_1-9]+)+/?$ ./?page=$1&%{QUERY_STRING} [L]

然后我把这条规则写在上面的那条规则之下,认为它会覆盖它,但它没有......

RewriteRule ^register/?$ ./?page=login&option=register

所以去/ register给我一个404.但是如果我注释掉第一条规则,那么注册页面就可以了。 我认为它会像CSS一样在下面编写新规则优先。 我怎样才能做到这一点,你如何覆盖以前写的重写规则?

谢谢!

1 个答案:

答案 0 :(得分:2)

.htaccess不是CSS - 尤其是涉及mod_rewrite指令/规则时。

规则从上到下执行。因此 - 在顶部放置更具体的规则,然后在底部放置更通用的

在你的情况下:

RewriteRule ^register/?$ ./?page=login&option=register [L]
RewriteRule ^([a-z-_1-9]+)+/?$ ./?page=$1&%{QUERY_STRING} [L]