【问题标题】:htaccess http to https with www. Without redirecting sub domainhtaccess http 到 https 和 www。不重定向子域
【发布时间】:2015-05-14 16:31:08
【问题描述】:

我有一个RewriteRule 将我的主域重定向到https://www.sta-games.com,它工作正常,但是当我尝试访问我的子域http://files.sta-games.com 时,它重定向到我的主域。

这是我的重定向规则

#HTTPS Redirection
RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

谁能看出问题所在?

【问题讨论】:

  • 第二个条件和规则声明,如果主机不以www.开头,则重定向到https://www.域。
  • 您的规则看起来不错。在 Chrome 开发工具中测试这个,看看你得到了什么重定向。
  • 我试过了,但域更改为https://www.files.sta-games.com,页面显示我的主页

标签: apache .htaccess mod-rewrite redirect


【解决方案1】:

您需要调整您的规则,以便它查找整个域,而不仅仅是其中的一部分。现在你只是在寻找www 的缺席。这就是您的子域重定向的原因。

首先你需要结合你的规则,因为如果 https 没有打开并且没有www,你似乎想要重定向,所以制定一个规则。然后在规则中使用您的实际域名。将 example.com 替换为您的域。这应该可以解决您的问题。

#HTTPS Redirection
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com
RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]

【讨论】:

    【解决方案2】:

    对除主域之外的所有域都有一个额外的跳过条件:

    RewriteCond %{HTTP_HOST} ^(www\.)?sta-games\.com$ [NC]
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.sta-games.com%{REQUEST_URI} [L,R=301,NE]
    

    清除浏览器缓存后进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 2015-05-19
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多