我在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一样在下面编写新规则优先。 我怎样才能做到这一点,你如何覆盖以前写的重写规则?
谢谢!
答案 0 :(得分:2)
.htaccess不是CSS - 尤其是涉及mod_rewrite指令/规则时。
规则从上到下执行。因此 - 在顶部放置更具体的规则,然后在底部放置更通用的。
在你的情况下:
RewriteRule ^register/?$ ./?page=login&option=register [L]
RewriteRule ^([a-z-_1-9]+)+/?$ ./?page=$1&%{QUERY_STRING} [L]