【问题标题】:Force all requests to use https:// and prepend www强制所有请求使用 https:// 并在前面加上 www
【发布时间】:2014-04-24 17:53:12
【问题描述】:

我花了无数个小时试图解决这个问题,而且它正在我的脑海中。我确信它非常简单,但我在 stackoverflow.com 或其他网站上找到的答案都没有适合我。

我使用的 SSL 证书仅对 www.example.com 有效,并且出于无数愚蠢的公司原因,我只能使用此证书。

我想强制所有请求使用 SSL 并在前面加上 www。到域。以下所有域都正确重写:

example.com/
http://example.com/
http://www.example.com/
https://www.example.com/

没有重写的域是我在任何地方都找不到答案的一个问题

https://example.com

它只是吐出通常的“证书无效”警告。

我的 .htaccess 文件中有以下代码:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

RewriteCond %{http_host} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

我真的希望有人为我提供解决方案,因为我在任何地方都找不到答案。

【问题讨论】:

    标签: .htaccess mod-rewrite ssl


    【解决方案1】:

    这应该可行:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=302]
    
    RewriteCond %{HTTPS} =off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=302,L]
    

    它会检查它是否在 url 中有www,如果没有,则添加它。然后它会检查它是否是https,如果不是,它会添加它。

    【讨论】:

    • 非常感谢。现在的行为正是我所需要的。
    猜你喜欢
    • 2016-06-02
    • 2013-01-22
    • 2023-03-17
    • 1970-01-01
    • 2013-11-12
    • 2021-03-22
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多