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

Как использовать .htaccess, чтобы всегда перенаправлять с HTTP на HTTPS?

Есть несколько похожих вопросов, на которые я пытался найти ответ, но пока безуспешно. Посоветуйте, пожалуйста, как я всегда могу перенаправить http на https (а также удалить www. от имени хоста в процессе). Также побочное примечание, было бы неплохо сделать это внутри основной конфигурации Apache, а не .htaccess - но я полагаю, что это не относится к большинству людей.

Обновить:

Я добавил этот фрагмент в VirtualHost раздел:

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

... но это не действует, когда я открываю http://www.domain (он должен перенаправить на https://domain)

Обновление 2:

Это не повлияло, потому что я не использовал RewriteEngine on - так теперь работает:

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

Есть так много решений:

RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://yourdomain/$1 [R,L]

Если вы используете балансировщик нагрузки, вам нужно будет использовать другое условное выражение. Это работает для AWS ELB:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://yourdomain.com/$1 [R=301,L]
</IfModule>

два решения. добавьте любой из них в свой .htaccess

RewriteEngine on
RewriteCondition %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Я бы не стал использовать mod_rewrite, вы можете добиться этого просто с помощью mod_alias:

Redirect permanent / https://other-site

Где «другой сайт» - это имя хоста, на который вы хотите выполнить перенаправление, без www. префикс, который вам не нужен.

Судя по вашим комментариям, вы не включаете mod_rewrite:

LoadModule rewrite_module modules/mod_rewrite.so