【问题标题】:Redirect to https. Conflict with two domains重定向到 https。与两个域冲突
【发布时间】:2018-08-27 15:21:07
【问题描述】:

我在同一主机上有两个站点。每个都在不同的文件夹中,每个都有自己的域。

  • 站点 1。它有 https。

  • 站点 2。它没有https,只有http。

如果我将 .htaccess 放在 Site1 文件夹的根目录中,则 site2 的地址也会被重定向到它在 https 中的地址。在 Site2 我没有 .htaccess

这是我在 .htaccess 中的代码:

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

为什么会发生这种情况以及如何仅在 Site1 上从 http 重定向到 https?

【问题讨论】:

  • 我们能看到htaccess文件吗?至少相关部分?

标签: .htaccess mod-rewrite


【解决方案1】:

您可以添加条件以使此规则特定于site1

RewriteCond %{HTTP_HOST} ^(?:www\.)?site1\. [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

site1更改为您的实际站点名称,不要忘记在新浏览器中进行测试以避免旧缓存。

【讨论】:

  • 我添加了RewriteCond %{HTTP_HOST} ^(?:www\.)?site1\. [NC] 行,根据问题你已经有了。如果HTTP_HOST 变量为www.site1site1,则该行是一个返回true 的条件,因为起始www 是可选的。
  • 在最后一行你只写“^”来搜索,为什么?
  • ^ 表示始终返回 true 的起始位置,因为要匹配所有 URI。 ^(.*)$ 在你的正则表达式中也有同样的作用,但它有一个冗余组并且比需要的正则表达式长一点。顺便说一句,这对你有用吗?
猜你喜欢
  • 2018-02-16
  • 2017-02-20
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
相关资源
最近更新 更多