Как перенаправить субдомены в другой домен - PullRequest
3 голосов
/ 04 июня 2010

Что я пытаюсь сделать с помощью htaccess mod-rewrite:

Перенаправление всех поддоменов на новое имя домена с правилом перезаписи.

, например

test1.olddomain.com ===> test1.newdomain.com

test2.olddomain.com ===> test2.newdomain.com

test3.olddomain.com ===> test3.newdomain.com

Это то, что я имею до сих пор, что, конечно, неправильно:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$ [NC]
RewriteRule ^(.*) http://www.newdomain.com/$1 [R=301,L]

RewriteRule [a-zA-Z]+\.olddomain.com$ http://$1.newdomain.com/ [R=301,L]

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

Примечание. Причина, по которой я не перенаправляю весь домен с использованием DNS, заключается в том, что многим каталогам нужны специальные правила перезаписи, чтобы сохранить позиции в SEO.

Ответы [ 2 ]

3 голосов
/ 04 июня 2010

В файлах .htaccess "URL", который соответствует RewriteRules, был удален из имени домена и любых каталогов, которые привели к текущему каталогу. (Использовать mod_rewrite в файлах .htaccess очень сложно; если у вас есть доступ к серверу, используйте его вместо этого !!)

Итак, предполагая, что ваш .htaccess находится в вашем DocumentRoot, попробуйте что-то вроде этого:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://%1newdomain.com/$1 [R=301,L]

% 1 должен соответствовать первой группе в RewriteCond, а $ 1 должен соответствовать части URL.

0 голосов
/ 04 июня 2010
RewriteRule ^(.+)\.olddomain\.com$ http://$1.newdomain.com/ [R=301,L]

Вам нужно указать ^ в начале, чтобы попросить механизм регулярных выражений соответствовать строке, начинающейся там. Затем вы сопоставляете что-либо до ".olddomain.com" и назначаете это первому сопоставленному шаблону (который позже будет доступен в $ 1). Вам нужно заключить в скобки (. +), Чтобы совпадение было присвоено $ 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...