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

Nic*_*ton 7 http .htaccess

有一些类似的问题,我试图从中找出答案,但到目前为止我一直没有成功。请告知我如何始终将 http 重定向到 https(并在此过程中从主机名中删除www.)。还有一个附带说明,最好在主 Apache conf 中执行此操作而不是.htaccess- 但我想这不适用于大多数人。

更新:

我已将此代码段添加到一个VirtualHost部分:

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

...但它在我访问时没有效果http://www.domain(它应该重定向到https://domain

更新 2:

它没有效果,因为我没有使用RewriteEngine on- 所以它现在可以工作:

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

Ber*_*Ott 18

解决方法有很多:

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


小智 5

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

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


jmt*_*mtd 3

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

Redirect permanent / https://other-site
Run Code Online (Sandbox Code Playgroud)

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