2010-12-28 3 views
2

У меня есть URL-адрес на моем сайте, который работает без /, но когда я добавляю / он говорит, что есть цикл редирект ... Я изо всех сил, чтобы увидеть проблему здесь .....htaccess вызывает перенаправлять петлю

Options -indexes 
RewriteEngine On 
# 
# 
#php_value output_handler ob_gzhandler 
php_value output_handler none 
php_flag register_globals off 
php_flag safe_mode off 

ErrorDocument 404 /404 
# 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
# 
RewriteCond %{HTTP_HOST} !^www.domain.com$ 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L] 

RewriteRule ^battery/([^/]+)$ /browser/product?sku=BATTERY+$1&type=battery 
RewriteRule ^vehicles/([^/]+)/([^/]+)/([^/]+)/product([0-9]+)$ /browser/index.php?make=$1&model=$2&id=$3&%{QUERY_STRING} [L,NC] 

RewriteRule ^vehicles/([^/]+)/([^/]+)/([^/]+)/([0-9]+)$ /browser/product.php?make=$1&model=$2&year=$3&id=$4&%{QUERY_STRING} [L,NC] 

RewriteRule ^vehicles/([^/]+)/([^/]+)/([^/]+)$ /store/product/list.php?make=$1&model=$2&year=$3&%{QUERY_STRING} [L,NC] 
RewriteRule ^vehicles/([^/]+)/([^/]+)$ /vehicle/make/model/year/list.php?make=$1&model=$2&%{QUERY_STRING} [L,NC] 
RewriteRule ^vehicles/([^/]+)$ /vehicle/make/model/list.php?make=$1&%{QUERY_STRING} [L,NC] 
RewriteRule ^vehicles/$ /vehicle/make/list.php{QUERY_STRING} [L,NC] 

RewriteRule ^keyfinder /browser/product?id=1001552 [L,NC] 
+0

Не могли бы вы рассказать нам URL? мы не можем знать, какие правила применяются, если мы не знаем URL-адреса. – dvb

+0

https://www.ikeyless.com/vehicles/Honda/Odyssey - добавьте на него '/', и он вызовет цикл перенаправления ошибка – Webnet

ответ

3

Я, вероятно, сделал бы какое-то регулярное выражение, отличное для RewriteRule, но, похоже, он работает для этого конечного слэша. Добавить /? до конца каждого из ваших RewriteRules для транспортных средств, аккумулятор & keyfinder. /? говорит, что ищет нуль или одну конечную косую черту в конце строки.

Вот пример:

RewriteRule ^vehicles/([^/]+)/([^/]+)/?$ /vehicle/make/model/year/list.php?make=$1&model=$2&%{QUERY_STRING} [L,NC] 
RewriteRule ^vehicles/([^/]+/?)$ /vehicle/make/model/list.php?make=$1&%{QUERY_STRING} [L,NC] 
RewriteRule ^vehicles/?$ /vehicle/make/list.php{QUERY_STRING} [L,NC] 

Изменение выше, будет решить проблему петли перенаправления вызванной слэшем, но не само перенаправление петли. Возможно, вы ожидали, что появится ваша 404 страница. Это не сработало, потому что «ErrorDocument» ошибочен. Расширение для страницы 404 отсутствует.

Так же в качестве примера, если ваша страница называется 404.php, линия должна выглядеть так ...

ErrorDocument 404 /404.php 

Надеется, что это помогает

+0

thx для проблемы 404 ... когда я добавляю '?' в '^ vehicle /? $', он полностью переадресовывает перенаправление для транспортных средств, но отлично работает на клавиатуре. – Webnet

+0

Я никогда не использовал или даже не видел {QUERY_STRING}, используемый с RewriteRule, только в RewriteCond, я не заметил этого в первый раз. В любом случае это не обязательно для ваших транспортных средств /? $. Эта строка перенаправляется на https://www.ikeyless.com/vehicle/make/list.php, который будет нормально загружаться без какой-либо query_string, поскольку эта страница просто генерирует список всех транспортных средств. Другие транспортные средства/линии заботятся о любых конкретных запросах на транспортные средства. Поэтому удалите {QUERY_STRING} из строки «RewriteRule^vehicles/$ /vehicle/make/list.php{QUERY_STRING} [L, NC]» и удалите «&% {QUERY_STRING}» из всех остальных строк. – Craig

+0

{QUERY_STRING} позволяет мне принимать параметры к этому URL-адресу .... Я хотел бы сохранить эту функциональность, и это необходимо в нескольких местах. – Webnet

0

Можно ли иметь журнал переписывающего двигателя?
Добавьте следующие строки в конфигурации (ниже RewriteEngine On достаточно):

RewriteLog  logs/rewrite_https.log 
RewriteLogLevel 15 

Я полагаю, ваши другие журналы в logs/

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