перенаправление https://www.example.com на https://example.com не работает

Я использую elasticbeanstalk для перенаправления HTTP-запросов на защищенный порт.

Я хочу перенаправить все мои запросы на https://example.com . https://simonecarletti.com/blog/2016/08/redirect-domain-http-https-www-apache/

Насколько я понимаю, должно работать следующее условие

RewriteCond %{HTTP_HOST} ^www\. [NC]
2
задан 18 December 2017 в 20:38
1 ответ

Насколько я понимаю, должно работать следующее условие

 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} .)

1
ответ дан 3 December 2019 в 12:34

Теги

Похожие вопросы