Есть несколько похожих вопросов, на которые я пытался найти ответ, но пока безуспешно. Посоветуйте, пожалуйста, как я всегда могу перенаправить http на https (а также удалить www. от имени хоста в процессе). Также побочное примечание, было бы неплохо сделать это внутри основной конфигурации Apache, а не .htaccess
- но я полагаю, что это не относится к большинству людей.
Я добавил этот фрагмент в VirtualHost
раздел:
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
... но это не действует, когда я открываю http://www.domain
(он должен перенаправить на https://domain
)
Это не повлияло, потому что я не использовал 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