【问题标题】:Advice on Configuring .HTaccess file to Redirect HTTP Subdomain to HTTPS Equivalent关于配置 .HTaccess 文件以将 HTTP 子域重定向到 HTTPS 等效项的建议
【发布时间】:2011-07-18 22:43:49
【问题描述】:

我确信这个问题有一个简单的答案,但我已经浏览了可用的线程,它要么不存在,要么我太无知,无法从我的脸上开始识别它。 This 似乎是答案,但我就是无法正确配置。

问题:如何设置 .htaccess 以便将所有子域转发到其 https 等效项,同时还允许主域本身移植到其 https 等效项?换句话说:

  1. hxxp://subdomain1.domain.com --> hxxps://subdomain1.domain.com
  2. hxxp://subdomain2.domain.com --> hxxps://subdomain2.domain.com

...等等,还有...

  1. hxxp://domain.com --> hxxps://domain.com

当前配置: 我的 .htaccess 设置为提供无条件转发,如下所示:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.com/$1 [R,L]

为了实现我想要的,我认为必须有某种方法来定义通配符并将该通配符的结果作为子域(无论是 subdomain1、subdomain2 还是无值)传递给实际的重定向。

任何帮助将不胜感激。

【问题讨论】:

    标签: .htaccess ssl redirect https subdomain


    【解决方案1】:

    我没有对此进行测试,但它应该允许您捕获子域以及请求。

    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{HTTP_HOST} ^(.*)\.yourdomain\.com$
    RewriteRule ^(.*)$ https://%1.domain.com/$1 [R,L]
    

    但是,此规则不适用于不包含子目录的请求,因此您实际上需要两个规则。

    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{HTTP_HOST} ^yourdomain\.com$
    RewriteRule ^(.*)$ https://domain.com/$1 [R,L]
    

    【讨论】:

    • 谢谢。谢谢!它完美地工作。出于好奇,为什么这么复杂?换句话说,为什么将变量定义为潜在的子域--> (.*)?
    • 基本上,您需要捕获条件括号中的子域,以便在 RewriteRule 中您可以确保将用户重定向到正确的子域。通常,您不必担心这一点,因为大多数时候当您进行重写时,您是在内部进行的。由于您正在更改协议,并且不能简单地进行本地重定向,因此您需要这个额外的步骤。
    【解决方案2】:
    1. 转到您的子域文件夹
    2. 在此文件夹中创建 .htaccess 文件
    3. 并粘贴此代码:
    重写引擎开启 RewriteCond %{HTTPS} 关闭 重写规则 ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 2020-04-21
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      相关资源
      最近更新 更多