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

Добавить www в домен, но не для определенного домена

В моем .htaccess файл:

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

Приведенный выше код предназначен для добавления www к домену, если у него нет www. Но у меня есть домен вроде: myloadbalancername-432566808.us-west-1.elb.amazonaws.com (DNS от AWS Elastic Load Balancer), и этот домен не работает с www. Итак, как я могу добавить www для всех доменных запросов, кроме конкретного домена?

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

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

Как и в случае с другим вашим состоянием, проверка наличия www в хозяин, вам нужно проверить HTTP_HOST снова переменная сервера, а не REQUEST_URI - который содержит только URL-путь.

Попробуйте следующее:

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

Я также добавил начало привязки строки (^), поэтому он быстрее выйдет из строя, если он выйдет из строя (более эффективно), а не поиск для "myloadbalancername" в любом месте строки хоста. Кроме того, нет необходимости включать якоря, если вы захватываете весь узор (например, ^(.*)$ такой же как (.*)).

Перед тестированием очистите все промежуточные кеши, так как все ошибочные 301 будут кэшированы браузером.