htaccess 重定向非 www http 和 https

发布于 2024-08-16 20:41:16 字数 311 浏览 16 评论 0原文

我希望:

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

并且任何 http://whatever.example.com 都不会像 那样附加 www >http://www.whatever.example.com

I'd like to have:

  • http://example.com redirect to: http://www.example.com
  • https://example.com redirect to: https://www.example.com

And anything that is http://whatever.example.com NOT append the www like http://www.whatever.example.com.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉生梦死 2024-08-23 20:41:16

试试这个规则:

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

这里有一个解释:

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

Try this rule:

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

Here’s an explanation:

  1. The first condition tests if the HTTP header field Host has the required format (contains exactly one period).
  2. The second condition tests if the concatenated value of the value of the HTTPS variable (values on and off) and s (so either ons or offs) is equal to ons and captures the s. This means if %{HTTPS}s evaluates to ons, the first matching group is s and empty otherwise.
  3. The rule will match all requests as every string has a start (marked with ^) and redirects them to the evaluated value of http%1://www.%{HTTP_HOST}%{REQUEST_URI} if both conditions are true. Where %1 is the first matching group of the previous condition (s if HTTPS and empty otherwise), %{HTTP_HOST} is the HTTP Host of the request and %{REQUEST_URI} is the absolute URL path that was requested.
相守太难 2024-08-23 20:41:16

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

RewriteCond %{HTTPS} on

Try adding this RewriteCond to your .htaccess file to catch SSL only - then do the same thing for standard http.

RewriteCond %{HTTPS} on
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文