Apache 中基于域名的重定向

Apache 中基于域名的重定向

我有一个 .htaccess 文件,该文件在多个网站之间共享。每个网站都由同一组文件提供服务,但根据它们运行的​​域名加载不同的配置。

但是,我需要添加多个 301 重定向,但遇到了一个小问题。我只希望重定向针对特定域执行,而不是针对使用 .htaccess 的每个域执行。例如,我想重定向mysite1.com/some/path到 ,mysite2.com/some/other/path但问题是如果/some/path也存在,mysite3.com它也会重定向。

我基本上需要的是类似这样的东西:

<if host = mysite1.com>
  Redirect /some/path http://mysite2/some/other/path
</if>

在 .htaccess 中可以实现这个吗?

答案1

有可能的,通过向您的 RewriteRule 添加条件,例如。

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.othersite1.com$   [OR,NC]
RewriteCond %{HTTP_HOST} ^www.othersite2.com$   [NC]
RewriteRule ^some/path        http://mysite2/some/other/path [R]

这样做的目的是:

  • 然后,它会测试请求的 URL 是否与“some/path”匹配。请记住,在 .htaccess 上下文中,URL 是相对于 .htaccess 文件所在目录的。如果符合上述条件,则会对其进行评估。
  • 由于两个条件是“或”关系,因此只需匹配一个条件。在此示例中,我有两个域希望此规则重定向。您可以轻松添加更多域。
  • 最后,URL 被重写并重定向...

相关内容