http和https非www的htaccess重定向

http和https非www的htaccess重定向,http,.htaccess,redirect,https,Http,.htaccess,Redirect,Https,我想要: http://example.com重定向到:http://www.example.com https://example.com重定向到:https://www.example.com 以及http://whatever.example.com不要像http://www.whatever.example.com试试这个规则: RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteCond %{HTTPS}s ^on(s)| RewriteR

我想要:

  • http://example.com
    重定向到:
    http://www.example.com
  • https://example.com
    重定向到:
    https://www.example.com
以及
http://whatever.example.com
不要像
http://www.whatever.example.com

试试这个规则:

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

  • 第一个条件测试HTTP头字段主机是否具有所需格式(仅包含一个句点)
  • 第二个条件测试HTTPS变量值(值
    on
    off
    )和
    s
    (因此
    ons
    offs
    )的串联值是否等于
    ons
    ,并捕获
    s
    。这意味着如果
    %{HTTPS}s
    的计算结果为
    ons
    ,则第一个匹配组为
    s
    ,否则为空
  • 该规则将匹配所有请求,因为每个字符串都有一个开始(标记为
    ^
    ),如果两个条件都为真,则将它们重定向到
    http%1://www.%{http\u HOST}%{REQUEST\u URI}
    。其中,
    %1
    是前一个条件的第一个匹配组(
    s
    如果是HTTPS,则为空,
    %{HTTP\u HOST}
    是请求的HTTP主机,
    %{request\u URI}
    是请求的绝对URL路径

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

    RewriteCond %{HTTPS} on
    

    你能解释一下吗?这对我来说是一种中国式的。。。第一行仅用于捕获由两部分组成的主机(例如:example.com)。第二行做什么,如何做?看起来不错,但为我生成了500条内部错误消息。在某些主机上,您需要在|上用
    RewriteCond%{HTTP:X-Forwarded-SSL}s^替换第二行以正确检测SSL。