【问题标题】:HTTPS forwarding for subdomain子域的 HTTPS 转发
【发布时间】:2017-12-30 00:04:40
【问题描述】:

我有一个域,我们将其设为example.com,还有一个子域,sub.example.com。对于子域,我有 SSL 证书,对于主域,我没有。在我的服务器上,我的主域有一个 .htaccess 文件,但我的子域没有。如何在此文件中指定从http://sub.example.com 转发到https://sub.example.com?还是我的子域文件夹中需要第二个.htaccess 文件?

【问题讨论】:

    标签: .htaccess ssl https subdomain forwarding


    【解决方案1】:

    我假设您的子域托管在主域文档根目录之外的子目录中?那么主域的.htaccess文件是在父目录下吗? (如果没有,那么您需要在子域的根目录中再添加一个 .htaccess 文件。)

    在主域的 .htaccess 文件顶部尝试以下 mod_rewrite 指令。

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^sub\.example\.com [NC]
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
    

    这是一个临时 (302) 重定向。仅当您确定它工作正常时才将其更改为 301。 (永久重定向被浏览器硬缓存,因此可能会使测试出现问题。)

    您只需要在文件顶部有一个RewriteEngine 指令。

    更新:如果文件结构如上所述(即子域位于主域文档根目录之外的子目录中 - .htaccess 文件所在的位置),那么您将需要使用REQUEST_URI 服务器变量来引用 URL 路径,而不是对捕获的RewriteRule pattern 的反向引用(即 $1 - 正如我最初所拥有的那样),因为捕获的反向引用将包含 子目录,它不是 URL 路径的一部分。

    【讨论】:

    • 好奇您会在 3 年后不接受答案 - 没有评论? (它最初是否有效?!)无论如何,我看到我的答案存在问题,我现在已经更新/更正了......当访问子域时(假设指向主域文档根目录之外的子目录) 那么您将需要使用REQUEST_URI 服务器变量,而不是像我最初那样对RewriteRule 模式 进行反向引用($1)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多