避免登陆页面重定向 - 强制www和https

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了避免登陆页面重定向 - 强制www和https相关的知识,希望对你有一定的参考价值。

我正在尝试将非www转发到www并将http转发给https。 我尝试了其他解决方案,我可以开始工作的唯一代码如下:

RewriteEngine on
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteRule ^(.*)$ https://%HTTP_HOST/$1 [R=301,L]
RewriteCond %HTTP_HOST ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]

更新:(像@Croises所述) - 首先重定向www然后重新定位https

RewriteEngine on
### redirect non-www to www
RewriteCond %HTTP_HOST ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]
### redirect non-http to https
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteRule ^(.*)$ https://%HTTP_HOST/$1 [R=301,L]
答案

在https之前重写域:

RewriteEngine on
RewriteCond %HTTP_HOST !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteRule ^(.*)$ https://%HTTP_HOST/$1 [R=301,L]
另一答案

您可以对重定向使用此单一规则:

RewriteEngine on

RewriteCond %HTTP_HOST !^www\. [NC,OR]
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteCond %HTTP_HOST ^(?:www\.)?(.+) [NC]
RewriteRule ^ https://www.%1%REQUEST_URI [L,R=301,NE]

在测试此更改之前清除浏览器缓存

以上是关于避免登陆页面重定向 - 强制www和https的主要内容,如果未能解决你的问题,请参考以下文章

GitHub 页面 https/www 重定向

Javascript:重定向到不同的子域

Javascript:重定向到不同的子域

.htaccess重写合并

Google Analytics 强制 HTTPS 阻止 307 内部重定向

Cloudflare从非主域重定向到Github页面