使用.htaccess重定向http://,http://www.,及https://www. 至https://

使用.htaccess重定向http://,http://www.,及https://www. 至https://,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,看起来这个问题的各种排列方式以前都被问过,但看起来所有的答案都有特定的特质,不适用于我的情况,或者根本不起作用 所以,这就是我想要的 我想要这三个URL: 。。。要全部重定向到: 从另一个答案来看,我试过这个 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ https:/

看起来这个问题的各种排列方式以前都被问过,但看起来所有的答案都有特定的特质,不适用于我的情况,或者根本不起作用

所以,这就是我想要的

我想要这三个URL:

  • 。。。要全部重定向到:

    从另一个答案来看,我试过这个

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
        RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
    
        RewriteCond %{HTTPS} off
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </IfModule>
    
    
    重新启动发动机
    重写基/
    重写cond%{HTTP_HOST}^www\.(.+)$[NC]
    重写规则^https://%1%{REQUEST_URI}[R=301,L]
    重写条件%{HTTPS}关闭
    重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
    
    但是,这并没有从重定向到

    因此,结果是一个证书警告(因为我的证书仅对example.com有效,而对www.example.com无效)

    我也试过这个

    
    重新启动发动机
    重写cond%{HTTPS}=在…上
    重写规则^(.*)$https://%{HTTP_HOST}/$1[R=301,L]
    重新启动发动机
    重写cond%{HTTPS}=在…上
    重写cond%{HTTP_HOST}^www\.(.+)$[NC]
    重写规则^%{ENV:PROTO}://%1%{REQUEST_URI}[R=301,L]
    
    。。。但这也不起作用:

    • 被重定向到
    • 没有重定向
    提前感谢您的帮助。

    您不能这样做

    HTTPS是一个外部包装(顾名思义,是传输层)。在服务器获取请求头、确定HTTP 1.1主机并发送
    位置
    头之前,第一个HTTPS层应该工作(并纠正证书问题)

    为此,您需要一个对
    example.com
    www.example.com
    都有效的“通配符证书”,或者为上述主机提供两个不同的证书,其中一个只为提供重定向而付费

    这很难接受,但这就是它的工作原理

    如果CAs最终接受
    www.domain
    domain
    应该附带一个单一的证书(虽然有点贵,但不超过两倍或更贵),那就太好了。

    你不能这样做

    HTTPS是一个外部包装(顾名思义,是传输层)。在服务器获取请求头、确定HTTP 1.1主机并发送
    位置
    头之前,第一个HTTPS层应该工作(并纠正证书问题)

    为此,您需要一个对
    example.com
    www.example.com
    都有效的“通配符证书”,或者为上述主机提供两个不同的证书,其中一个只为提供重定向而付费

    这很难接受,但这就是它的工作原理

    如果CAs最终接受
    www.domain
    domain
    应该附带一个单一的证书(如果有点贵,但不是两次或更贵的话),那就太好了。

    试试:

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
    
    这将使用
    条件标志,以便在不是https或主机以“www”开头时发生重定向

    还有一点值得注意:

    因为我的证书仅对example.com有效,而对www.example.com无效

    SSL握手发生在发送HTTP请求之前。这意味着当您请求
    https://www.example.com/
    ,浏览器将看到证书并立即将其标记为安全异常。除购买新证书外,您无能为力。

    试试:

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
    
    这将使用
    条件标志,以便在不是https或主机以“www”开头时发生重定向

    还有一点值得注意:

    因为我的证书仅对example.com有效,而对www.example.com无效

    SSL握手发生在发送HTTP请求之前。这意味着当您请求
    https://www.example.com/
    ,浏览器将看到证书并立即将其标记为安全异常。除了买一张新的证书,你什么也做不了