如何使用 .htaccess 始终从 HTTP 重定向到 HTTPS?

如何使用 .htaccess 始终从 HTTP 重定向到 HTTPS?

有几个类似的问题,我尝试过从中找出答案,但到目前为止我还没有成功。请告诉我如何才能始终将 http 重定向到 https(并删除万维网。来自进程中的主机名)。另外需要注意的是,最好在主 Apache conf 中执行此操作,而不是.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]

答案1

我不会使用mod_rewrite,你可以简单地用以下方法实现它mod_alias

Redirect permanent / https://other-site

其中“other-site”是您要重定向到的主机名,省略您不想要的 www. 前缀。

答案2

解决方案有很多:

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

答案3

如果您使用负载均衡器,则需要使用不同的条件。这适用于 AWS ELB:

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

答案4

从您的评论来看,您似乎没有包括 mod_rewrite:

LoadModule rewrite_module modules/mod_rewrite.so

相关内容