Не работает правило для mod_rewrite

KD
На сайте с 12.07.2007
Offline
37
686

Всем доброй ночи! В общем есть проблема с написанием правила для mod_rewrite. Не пойму, где ошибка? Может кто подскажет (должно открываться под урлом http://www.site.com/brands/tralala.php)?

RewriteRule ^brands/(.*)\.php /brands/detail.php?code=$1&%{QUERY_STRING} [L]

krotov.dima добавил 03.02.2011 в 01:36

Порезало что-то мое правило. Вот как правильно (перед .php обрытный слэш)

RewriteRule ^brands/(.*)\.php /brands/detail.php?code=$1&%{QUERY_STRING} [L]

Выдает 500 ошибку.

[Удален]
#1

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^brands/(.*).php /brands/detail.php?code=$1&%{QUERY_STRING} [L]
</IfModule>
gormarket
На сайте с 29.12.2010
Offline
47
#2
krotov.dima:

RewriteRule ^brands/(.*)\.php /brands/detail.php?code=$1&%{QUERY_STRING} [L]

Выдает 500 ошибку.

У Вас преобразованный URI "brands/detail.php..." подходит для этого же правила преобразований "^brands/(.*)\.php" и правило применяется к нему снова и снова, вызывая зацикливание и вывод 500 ошибки. Нужно не допускать повторного преобразования, добавив перед правилом условие, проверяющее, что преобразование еще не сделано:


RewriteCond %{REQUEST_URI} !detail\.php
RewriteRule ^brands/(.*)\.php$ /brands/detail.php?code=$1&%{QUERY_STRING} [L]
Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
KD
На сайте с 12.07.2007
Offline
37
#3
gormarket:
У Вас преобразованный URI "brands/detail.php..." подходит для этого же правила преобразований "^brands/(.*)\.php" и правило применяется к нему снова и снова, вызывая зацикливание и вывод 500 ошибки. Нужно не допускать повторного преобразования, добавив перед правилом условие, проверяющее, что преобразование еще не сделано:


RewriteCond %{REQUEST_URI} !detail\.php
RewriteRule ^brands/(.*)\.php$ /brands/detail.php?code=$1&%{QUERY_STRING} [L]

Спасибо, заработало!

krotov.dima добавил 03.02.2011 в 11:35

So1:
<IfModule mod_rewrite.c>

RewriteEngine on
RewriteRule ^brands/(.*).php /brands/detail.php?code=$1&%{QUERY_STRING} [L]
</IfModule>

Я же этот код и приводил в примере. Просто в сокращенном варианте (только rewriterule). К чему было дублирование?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий