Проблема с настройкой операторов перенаправления 301 в htaccess

У меня возникли проблемы с настройкой файла htaccess. В настоящее время у меня есть 15 доменов, обслуживающих собственный веб-сайт. Теперь, перемещая это на один веб-сайт и домен, я хочу обслуживать htaccess с 301 правилом для старых URL-адресов. Целевой URL-адрес зависит от доменного имени старого URL-адреса.

E.g.

http://www.previouswebsiteinspanish.com/contacto следует навсегда переписать на http://www.newcentralwebsite.eu/es/contact

Я понимаю, что мне нужно использовать RewriteCond, но я недостаточно знаком с ним, чтобы заставить его работать.

RewriteCond %{HTTP_REFERER} !^http://(www\.)?previouswebsiteinspanish/.*$ [NC]
RewriteRule ^([^/.]+)/contacto$ /$1/contact [R=301,L]

Заранее спасибо!


person Tim    schedule 19.03.2011    source источник


Ответы (3)


Ваше текущее условие заключается в том, что правило будет выполняться при условии, что ссылающаяся страница не находится в старом домене. Это, скорее всего, не то, что вы хотите сделать. :)

Вы хотите проверить параметр %{HTTP_HOST}, который содержит только часть имени хоста текущего запрошенного URL.

Если вы хотите перенаправить все в старом домене во вложенную папку es, это правило сделает это.

RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish.com$ [NC]
RewriteRule ^(.*)$ http://www.newcentralwebsite.eu/es/$1 [R=301,L]

Затем вам придется добавить аналогичные правила для каждого старого домена.

person nitro2k01    schedule 19.03.2011
comment
ОП написал, что хочет перенаправить контакт на контакт, поэтому (.*) не сработает. - person Eliasdx; 19.03.2011

RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish\.com$ [NC]
RewriteRule ^contacto$ http://www.newcentralwebsite.eu/es/contact [R=301,L]

Вам нужно проверить HTTP_HOST, который является именем хоста запрошенного сайта.

person Eliasdx    schedule 19.03.2011

Из вашего примера правило, которое я написал,

RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish\.com$ [NC]
RewriteRule ^contacto$ http://www.newcentralwebsite.eu/es/contact [R=301,L]

Добавьте такие правила в свой .htaccess. Вы должны написать такие правила для каждого домена.

В приведенном выше случае у вас также есть изменение URL-адреса, поэтому вам, возможно, придется обрабатывать и такие особые случаи.

person Zimbabao    schedule 19.03.2011
comment
Вы должны сбежать. в RewriteCond. - person Eliasdx; 19.03.2011