Перенаправление нескольких доменов в один домен (с или без www перед)

У меня около 18 доменов, которые нужно перенаправить на новый. Он должен работать как с www, так и без него.

Я пробовал это:

<IfModule mod_rewrite.c>
    RewriteEngine on 
    Rewritecond %{HTTP_HOST} !^www\.domain\.com
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>

Это дает мне цикл переадресации (и работает только с www раньше, я думаю?).

Ответ 1

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain1.com [OR]
RewriteCond %{HTTP_HOST} ^domain2.com [OR]
RewriteCond %{HTTP_HOST} ^domain3.com [OR]
RewriteCond %{HTTP_HOST} ^domain4.com [OR]
RewriteCond %{HTTP_HOST} ^domain5.com
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L]

Это перенаправит все ваши 18 доменов в ваш новый домен. www.newdomain.com В противном случае вы можете использовать следующий код для перенаправления каждого домена, если они находятся на отдельном хостинге

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

Ответ 2

Вместо перенаправления a.com, b.com, c.com в newdomain.com вы можете сделать это:

Перенаправить все, что не newdomain.com в http://www.newdomain.com

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

Кредит для этого: http://www.raramuridesign.com/blog/83-dev-htaccess-redirect-a-domain-or-multiple-domains.html, где это объясняется более подробно.

Я попробовал его для проекта клиента, и он работает как прелесть.

Ответ 3

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

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [OR]
RewriteCond %{HTTP_HOST} ^domain1\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$ [OR]
RewriteCond %{HTTP_HOST} ^domain2\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain3\.com$ [OR]
RewriteCond %{HTTP_HOST} ^domain3\.com$
RewriteRule ^/?$ "http\:\/\/www\.domain\.com\/" [R=301,L]
  • Вышеуказанный формат также соответствует стилю перенаправления cPanel, выполненному в графическом интерфейсе.
  • Перенаправление www. версии и не-www. версия доменов является одной из проблем, которые другие решения (по крайней мере, я попробовал em!) не смог ее решить.
  • Обратите внимание на ^/?$ в RewriteRule

Если вы хотите перенаправить www-версию основного домена на не-www-версию, последние две строки должны быть такими:

RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^/?$ "http\:\/\/domain\.com\/" [R=301,L]

Хорошее перенаправление!

Ответ 4

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L]

^domain.com решает проблему WWW, поэтому все поддомены будут перенаправлены.

Убедитесь, что http://www.newdomain.com не включен в RewriteCond.

Это вызовет цикл перенаправления

Дополнительная информация