Я использую elasticbeanstalk для перенаправления HTTP-запросов на защищенный порт.
Я хочу перенаправить все мои запросы на https://example.com
.
https://simonecarletti.com/blog/2016/08/redirect-domain-http-https-www-apache/
Насколько я понимаю, должно работать следующее условие
RewriteCond %{HTTP_HOST} ^www\. [NC]
Насколько я понимаю, должно работать следующее условие
RewriteCond% {HTTP_HOST} ^ www \. [NC]
Да, это «работает». Однако ваше первое условие :
RewriteCond% {HTTP: X-Forwarded-Proto} = http
гарантирует, что директива обрабатывается только для HTTP-запросов.
Если вы используете Elastic Beanstalk , то я не думаю, что вам все равно следует проверять % {HTTPS}
(по крайней мере, вам не нужен ) - поскольку он всегда будет выключен
. Вы можете решить проблему, удалив эту избыточную проверку и переместив флаг ИЛИ
в первое условие. Например:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
( В сторону: Вы должны быть осторожны при проверке как % {HTTP: X-Forwarded-Proto}
, так и % {HTTPS}
так как это может позволить кому-то обойти вашу переадресацию, если она не обслуживается через прокси. Если вы не обслуживаете свой контент через прокси, вам не следует проверять % {HTTP: X-Forwarded-Proto}
.)