htaccess 重定向非 www http 和 https

Posted

技术标签:

【中文标题】htaccess 重定向非 www http 和 https【英文标题】:htaccess redirect for non-www both http and https 【发布时间】:2011-01-02 04:15:19 【问题描述】:

我想要:

http://example.com 重定向到:http://www.example.com https://example.com 重定向到:https://www.example.com

并且任何 http://whatever.example.com 都不要像 http://www.whatever.example.com 这样附加 www。

【问题讨论】:

【参考方案1】:

试试这个规则:

RewriteCond %HTTP_HOST ^[^.]+\.[^.]+$
RewriteCond %HTTPSs ^on(s)|
RewriteRule ^ http%1://www.%HTTP_HOST%REQUEST_URI [L,R=301]

这里有一个解释:

    第一个条件测试 HTTP 标头字段 Host 是否具有所需的格式(恰好包含一个句点)。 第二个条件测试 HTTPS 变量的值(值 onoff)和 s(所以是 onsoffs)的连接值等于ons 并捕获s。这意味着如果 %HTTPSs 计算结果为 ons,则第一个匹配组为 s,否则为空。 该规则将匹配所有请求,因为每个字符串都有一个开头(标有^),如果两个条件都为真,则将它们重定向到http%1://www.%HTTP_HOST%REQUEST_URI 的评估值。其中%1 是前一个条件的第一个匹配组(s 如果 HTTPS,否则为空),%HTTP_HOST 是请求的 HTTP Host%REQUEST_URI 是绝对 URL 路径这是请求的。

【讨论】:

你也能解释一下吗?这对我来说有点中文......第一行是为了只捕获两部分主机(如:example.com)。第二行是做什么的,如何做的? 看起来不错,但正在为我生成 500 条内部错误消息。 在某些主机上,您需要将第二行替换为 RewriteCond %HTTP:X-Forwarded-SSLs ^on(s)| 以进行正确的 SSL 检测。【参考方案2】:

尝试将此RewriteCond 添加到您的 .htaccess 文件中以仅捕获 SSL - 然后对标准 http 执行相同的操作。

RewriteCond %HTTPS on

【讨论】:

以上是关于htaccess 重定向非 www http 和 https的主要内容,如果未能解决你的问题,请参考以下文章

通过 htaccess 将所有 http 和 https 非 www URL 重定向到 https://www.xyz.com

.htaccess重定向(301):非WWW到WWW

Htaccess 301将规则/ HTTP重定向到HTTPS /非www到www

htaccess通配符子域重定向与https非www

htaccess - 将所有非 www 流量重定向到 www

https 非 www 重定向