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

Как сделать поддомен доменом по умолчанию, но сохранить работу других поддоменов?

У меня установлен сайт WordPress по адресу http://www.example.com и еще один тестирующий сайт WordPress по адресу http://test.example.com. Я успешно сделал http://www.example.com перенаправить на http://beta.example.com с этим кодом .htaccess:

RewriteCond %{HTTP_HOST} !^beta\.example\.com
RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L]

Однако при попытке перейти на http://test.example.com это заставляет его http://beta.example.com/test/ с ошибкой 404. Есть ли способ получить эту бета-версию перенаправления, но оставить мой сайт WordPress на http://test.example.com работает?

Если я правильно вас понял, и вы хотите, чтобы test.example.com по-прежнему переходил на test.example.com. Вы можете добавить еще одно условие, и для соблюдения правила должны быть выполнены оба условия. Это выглядело бы так:

RewriteCond %{HTTP_HOST} !^beta\.example\.com
RewriteCond %{HTTP_HOST} !^test\.example\.com
RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L]

Сейчас ни beta ни test поддомены будут перенаправлены, но ВСЕ другие будут.

Если вы хотите, чтобы www.example.com или example.com переходили на beta поддомен, который вы могли бы использовать

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

Есть отличный инструмент для проверки правил перезаписи мода на http://htaccess.madewithlove.be/

В качестве альтернативы, если у вас есть доступ к файлу зоны вашего сервера, вы можете настроить записи CNAME для всех доменов, которые вы хотите указать на beta субдомен, и перенаправление не произойдет, поэтому, если пользователь перейдет на www.example.com, URL-адрес останется тем же, когда он фактически находится на бета-сайте.