0

我在 htaccess 文件中有一些重写规则。我还在研究它,所以有些事情我不确定。基本上我希望所有页面(除了 /register 页面)都像这样重写: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 一样工作,在下面写一个新规则会优先。我怎样才能做到这一点,你如何覆盖以前编写的重写规则?

谢谢!

4

1 回答 1

2

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

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

在你的情况下:

RewriteRule ^register/?$ ./?page=login&option=register [L]
RewriteRule ^([a-z-_1-9]+)+/?$ ./?page=$1&%{QUERY_STRING} [L]
于 2012-06-11T10:54:35.857 回答