У меня установлен сайт 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-адрес останется тем же, когда он фактически находится на бета-сайте.