2012-06-11 2 views
0

У меня есть некоторые правила перезаписи в файле 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 

Так собирается/Регистр дает мне 404. Однако, если я закомментировать первое правило, то в регистр страниц работы. Я думал, что это будет работать как CSS, где написание нового правила ниже будет иметь приоритет. Как я получу это правильно и как вы переопределите ранее написанные правила перезаписи?

Спасибо!

+1

Вы установили '[L]', который делает правилу последнее правило для выполнения, если оно соответствует. Любые последующие правила будут проигнорированы. – Tomalak

+0

Спасибо за быстрый ответ. Я забрал [L], и все еще та же проблема – uguMark

+1

Поскольку ваше второе правило более конкретно, чем ваше первое, вы должны поменять их. '^ register /? $' должен быть первым, который будет проверен, и вы можете добавить '[L]' к этому. – Tomalak

ответ

2

.htaccess не является CSS - особенно когда дело доходит до инструкций/правил mod_rewrite.

Правила выполняются сверху донизу. Поэтому - ставить более конкретные правила сверху, а затем более общие внизу.

В вашем случае:

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

А, благодаря! Это сработало, как вы сказали – uguMark

Смежные вопросы