Назад | Перейти на главную страницу

Постоянные перенаправления Apache

как я могу перенаправить два домена на один сервер .. скажем, эти домены

http://www.game.com -> http://www.games.com
http://game.com -> http://www.games.com
http://games.com -> http://www.games.com (*this is not redirecting*)

весь домен все должны перенаправлять на этот домен http://www.games.com

Вот текущий контент htaccess

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

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

Всем нравится использовать mod_rewrite, хотя часто есть более простой способ сделать то же самое. Это использует mod_alias.

<VirtualHost *:80>
  ServerName game.com
  ServerAlias www.game.com
  ServerAlias games.com
  Redirect permanent / http://www.games.com
</VirtualHost>
<VirtualHost *:80>
  ServerName www.games.com
  .
  .
  .
</VirtualHost>

mod_rewrite кажется излишним. Если у вас есть доступ к конфигам vhost, вы можете упростить его, захватив Hosts в одном vhost и используйте RedirectMatch.

<VirtualHost *:80>
    ServerName games.com
    ServerAlias game.com www.game.com

    RedirectMatch permanent .* http://www.games.com/
</VirtualHost>

В последнем RewriteCond не должно быть необходимости - это дубликат второго условия в первом правиле.

Не видя вашей полной конфигурации Apache, я не могу сказать наверняка, но по моему опыту наиболее частая причина такого рода проблем - это когда виртуальный хост, для которого вы переписали, фактически не покрывает имя хоста, а некоторые другая конфигурация vhost используется для домена.