如何编写 RewriteCond 和 RewriteRule 以将 url www 更改为 non-www 并将 http 更改为 https?

Posted

技术标签:

【中文标题】如何编写 RewriteCond 和 RewriteRule 以将 url www 更改为 non-www 并将 http 更改为 https?【英文标题】:How to write RewriteCond and RewriteRule for changing url www to non-www and http to https? 【发布时间】:2016-06-27 19:53:10 【问题描述】:

在 Apache 的 httpd.conf 文件中,如何重写模块以使 url 的 www 为非 www 并强制 http 为 https? 当我在下面尝试时,它变成了无限重定向错误

RewriteCond %HTTP_HOST ^www.(.*)$
RewriteRule ^(.*)$ https://example.com$1

RewriteCond %HTTP_HOST ^example.com$
RewriteRule ^(.*)$ https://example.com$1

RewriteCond %HTTP_HOST ^www.(.*)$ [OR]
RewriteCond %HTTP_HOST ^example.com$
RewriteRule ^(.*)$ https://example.com$1

【问题讨论】:

【参考方案1】:

要从 www/http 重定向到非 www/https,您可以使用:

RewriteEngine on
RewriteCond %HTTP_HOST ^www\. [OR]
RewriteCond %HTTPS off 
RewriteRule ^(.*)$ https://example.com%REQUEST_URI [NC,L,R]

【讨论】:

我试过你的答案,它导致浏览器出现 ERR_TOO_MANY_REDIRECTS @Jaylee 你确定我的代码出现了这个错误吗?实际上我在我的 apache 上测试了这个,它工作正常并且没有重定向循环错误的机会。

以上是关于如何编写 RewriteCond 和 RewriteRule 以将 url www 更改为 non-www 并将 http 更改为 https?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写 RewriteCond 和 RewriteRule 以将 url www 更改为 non-www 并将 http 更改为 https?

Apache 重写到新文件夹不起作用(适用于现有文件夹)

需要将所有流量重定向到 https

使用 mod_rewrite 重定向查询字符串(反之亦然)

RewriteCond/RewriteRule解释

htaccess rewritecond 不工作