您需要使用mod\\u rewrite(RewriteRule
和RewriteCond
) 而不是mod\\u别名Redirect
指令,以检查请求的Host
标题。
例如,在.htaccess
文件,在# BEGIN WordPress
第节(指令的顺序很重要):
RewriteCond %{HTTP_HOST} ^foo\\.org [NC]
RewriteRule ^events$ https://bar.org/events/ [R=301,L]
此操作仅重定向
http(s)://foo.org/events
到
https://bar.org/events/
并忽略任何其他请求的主机,例如
subsite1.foo.org
. 请注意,在源URL上省略了尾随斜杠(如后面的示例所示),但在目标URL上包含了尾随斜杠。第一个示例省略了源URL和目标URL上的尾部斜杠?
UPDATE: 无论是否有尾部斜杠,重定向都应起作用
在这种情况下,您应该更改RewriteRule
图案读取^events/?$
为了匹配两者/events
和/events/
并重定向到bar.org/events/
在这两种情况下。换句话说:
RewriteRule ^events/?$ https://bar.org/events/ [R=301,L]
(包括上述
RewriteCond
指令同上。)
您需要在测试之前清除浏览器缓存,因为任何错误的301(永久)重定向都将被浏览器缓存。首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。
请注意Redirect
指令是前缀匹配的,因此Redirect 301 /events https://bar.org/events/
指令还将重定向/events/foo/bar/baz
到https://bar.org/events//foo/bar/baz
(请注意错误的双斜杠)。重复上述行为RewriteRule
, 但如果没有双斜杠问题,您可以更改RewriteRule
要读取的指令:
RewriteRule ^events(?:/(.*))?$ https://bar.org/events/$1 [R=301,L]
这将重定向
/events
到
bar.org/events/
,
/events/
到
bar.org/events/
和
/events/<something>
到
bar.org/events/<something>
.