重定向到 https 不适用于 www

Posted

技术标签:

【中文标题】重定向到 https 不适用于 www【英文标题】:Redirect to https not working with www 【发布时间】:2018-05-24 05:20:29 【问题描述】:

我有一个名为 example.com 的域。

我想始终重定向到https://www.example.comhttps AND www)。

意思是:我需要重定向

https://example.com

http://www.example.com

http://example.com

https://www.example.com

这是我目前的代码:

RewriteCond %HTTP_HOST ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]
RewriteCond %HTTP_HOST ^(www\.)?example\.com$ [NC]
RewriteRule !^web/ /web%REQUEST_URI [L,NC]

这适用于:

https://example.com

http://example.com

但它不适用于:

http://www.example.com

我已经为此工作了一整天(这里是下午 4 点),但没有成功。

为什么?谁能给我一个提示?我做错了什么?

【问题讨论】:

【参考方案1】:

您使用的规则仅将非 www 域重定向到 www 而不检查 https 标头。

你可以用这个:

RewriteEngine on

#http to https with www
RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST !^www\.
RewriteRule ^ https://www.example.com%REQUEST_URI [NC,L,R]
#other rules
RewriteCond %HTTP_HOST ^(www\.)?example\.com$  [NC]
RewriteRule !^web/ /web%REQUEST_URI [L,NC]

这会将httpnon-www 重定向到https://www

在测试之前清除浏览器缓存。

【讨论】:

以上是关于重定向到 https 不适用于 www的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 到 HTTPS 重定向不适用于现有规则

在 Codeigniter 中将 http 重定向到 https

Rails 应用程序 HTTP 到 HTTPS 重定向不适用于公开的 API

.htaccess 重定向桌面但不适用于移动浏览器

将 https://www 重定向到 https://non-www - 没有看到证书错误,可能吗?

从https重定向到http而没有我的网站的证书