2015-08-25 7 views
1

У меня возникают проблемы при использовании mod_rewrite в файле .htaccess для перенаправления на другой домен.mod_rewrite: Точный URL-адрес не соответствует, но соответствует не точно

Вот что у меня есть:

RewriteCond %{HTTP_HOST} ^www.somedomain.com/events_detail/an-event [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory/8559 [L,R=301,NC] 

RewriteCond %{HTTP_HOST} ^www.somedomain.com [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory [L,R=301,NC] 

По какой-то причине www.somedomain.com/events_detail/an-event я получаю перенаправлены http://otherdomain.com/directory вместо http://otherdomain.com/directory/8559

При тестировании мой .htaccess на тестере, это указывает на то, что он не соответствует первое условие, но совпадает со вторым. Я попытался удалить параметр L, удалив вперед^без успеха.

Спасибо

+0

Используйте% {REQUEST_URI} для сопоставления с именем пути в URL-адресе. – starkeen

ответ

1
RewriteCond %{HTTP_HOST} ^www.somedomain.com$ [NC] 
RewriteCond %{THE_REQUEST} /an-Event [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory/8559 [L,R=301,NC] 

RewriteCond %{HTTP_HOST} ^www.somedomain.com$ [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory [L,R=301,NC] 
+0

Спасибо, это сработало. Я не понял, что 'HTTP_HOST' был только именем хоста и что мне нужно дополнительное условие для запроса. Какая разница между 'THE_REQUEST' и' REQUEST_URI' (оба работают отлично для меня) – Anthon95

0

Насколько я могу видеть, HTTP_HOST содержит только имя хоста (например, www.somedomain.com), а не полный URL. Вы пробовали использовать REQUEST_URI или SCRIPT_FILENAME вместо этого?

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