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

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

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

Я хочу перенаправить все свои запросы на https://example.com.

Следующие сценарии работают

Тем не мение,

Я использую следующие правила перезаписи

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

Я воспользовался помощью следующей статьи, чтобы понять вариант использования 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-запросов.

Если вы используете Эластичный бобовый стебель, тогда я не верю, что тебе следует проверять %{HTTPS} в любом случае (по крайней мере, вы не необходимость to) - так как всегда будет off. Вы можете решить свою проблему, удалив эту избыточную проверку и переместив OR флаг к первому условию. Например:

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