有几个类似的问题,我尝试过从中找出答案,但到目前为止我还没有成功。请告诉我如何才能始终将 http 重定向到 https(并删除万维网。来自进程中的主机名)。另外需要注意的是,最好在主 Apache conf 中执行此操作,而不是.htaccess
- 但我认为这对大多数人来说并不适用。
- .htaccess 使用 SSL/HTTPS 将 www 重定向到非 www
- 将子域请求重定向到子目录 + https(使用 .htaccess)
- htaccess 重定向非 www http 和 https
更新:
我已将此片段添加到某个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