Прежде всего, спасибо за то, что уделили время моему вопросу.
Я пытаюсь перенаправить весь трафик с http: // и https: // на «https: // www. [Домен] .com / [etc]». В настоящее время я могу принудительно перенаправить все «www.» трафик на "https: // www." используя настройку в httpd.conf ниже:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://{%SERVER_NAME}%{REQUEST_URI}
</VirtualHost>
Эта настройка, к сожалению, несовместима. Если, например, я введу «https: // [домен] .com» в адресную строку браузера, перенаправление не произойдет. В некоторых браузерах "http: // [домен] .com" также перенаправляет на не-www "https: // [домен] .com".
Короче говоря, у меня возникли проблемы с настройкой правильного перенаправления с любого префикса домена на «https: // www» на инстансе Amazon EC2 в файле httpd.conf. Если вы можете мне помочь, я буду очень признателен. Еще раз спасибо за ваше время.
Изменить: Есть еще один вопрос и ответ, который касается общих правил перезаписи, однако есть некоторые особые правила для Amazon EC2 (ELB), которые не рассматриваются в этом ответе.Честно говоря, я не уверен, применимы ли особенности Amazon EC2 к моему вопросу, но код, который у меня есть (x-forwarded-proto), специфичен для ELB.
Как бы то ни было, я задаю этот вопрос, потому что все мои ресурсы исчерпаны. Если я найду (или найду) ответ где-то еще, я с радостью дополню свой вопрос информацией и ссылкой.
Edit2: Следующий код выполняет перенаправление с [домен] .com, http: // [domain.com] и http: // www. [Домен] .com на https: // www. [Домен ] .com. К сожалению, https: // [домен] .com по-прежнему не выполняет перенаправление.
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://{%SERVER_NAME}%{REQUEST_URI}
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
Есть ли другой VirtualHost, который мне нужно настроить для перенаправления домена https: //?
Это включит возможности перезаписи:
RewriteEngine On
Эта проверка позволяет убедиться, что соединение еще не является HTTPS:
RewriteCond %{HTTPS} !=on
Это правило перенаправит пользователей из их первоначального местоположения, на то же самое:
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Ведущий слэш сделан необязательным, так что это будет работать либо в местоположении httpd.conf, но с использованием HTTPS.
.