我有一个 .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 被重写并重定向...