【问题标题】:Apache redirect question to change domain nameApache重定向问题以更改域名
【发布时间】:2019-02-15 05:16:18
【问题描述】:

我正在尝试将重写规则添加到我的 apache 配置文件中,以将用户重定向到新的 url。

我网站的网址是https://openmind.scribesoftware.com。如果用户输入带有 https://openmind.scribesoft.com 的 URL(注意缺少“ware”),我想重定向他们,就好像他们输入了正确的 url。

我尝试了几种变体,例如:

RewriteEngine on
RewriteCond %{HTTPS_HOST} !^openmind\.scribesoft\.com$ [NC]
RewriteRule ^(.*)$ https://openmind.scribesoftware.com/$1 [R=301,L]

但是这会导致以下错误:

 This webpage has a redirect loop.

 The webpage at https://openmind.scribesoftware.com//enterprises/571 has resulted in too many redirects.

我已经有一个重写规则来将非 http 请求重定向到 https 请求,并且工作正常。

谢谢。

【问题讨论】:

  • @Spob - 请接受答案。完美解决问题。

标签: apache


【解决方案1】:

HTTPS_HOST 不是真正的变量(请参阅RewriteCond 文档)。使用 HTTP_HOST 和 HTTPS:

...
RewriteCond %{HTTP_HOST} !^openmind\.scribesoftware\.com$ [NC]
RewriteCond %{HTTPS} =on
...

【讨论】:

  • 感谢您的快速回复。好的,我的 conf 文件现在看起来像: RewriteEngine on RewriteCond %{HTTP_HOST} !^openmind\.scribesoft\.com$ [NC] RewriteCond %{HTTPS} ="on" RewriteRule ^(.*)$ openmind.scribesoftware.com/$1 [R =301,L] 它现在可以正常工作...但是当我导航到 openmind.scribesoft.com 时它也没有重定向。
  • 道歉 - 不需要引号。已编辑(这次实际尝试过)。
  • 这仍然会导致重定向循环。您应该删除 CondPattern 上的否定前缀 (!),因为您需要检查请求 匹配“其他”主机名(而不是它不匹配)匹配)。或者,保留否定前缀并更改主机名以匹配目标主机名(以便重定向目标以外的任何内容)。
  • @MrWhite 很好发现 - 不敢相信这已经存在 8 年了,没有人注意到这一点!已编辑。
猜你喜欢
  • 2019-01-15
  • 2010-12-17
  • 2015-04-26
  • 2019-04-29
  • 1970-01-01
  • 2012-08-12
  • 2013-06-29
  • 2011-03-08
  • 1970-01-01
相关资源
最近更新 更多