mod_alias vs mod_rewrite precedence



我有一个apache配置文件,可以使用mod_alias的Redirect指令和mod_rewrite的重写。

从我的理解中,mod_alias按文件的上到底部的顺序运行,而mod_rewrite则相反,最后一个规则是匹配的,除非您用[l]标志终止。

我的问题是,我的Redirect规则放置在重写上方,但似乎仍在应用重写,因此我最终将所有人重定向到同一URL。

我要实现的目标是将某些位置重定向到另一个Web服务器,并且与Mod-Rewrite的全部捕获,因此片段看起来像This

<VirtualHost *:80>
ServerName example.com
Redirect permanent "/foo/bar/location1/" "https://example2.com/foo/baz/location1"
Redirect permanent "/foo/bar/location2/abc" "https://example2.com/foo/baz/location2/def"
RewriteEngine on
RewriteRule ^.*$ "https://example2.com/catch-all/? [R=301, L]

另外,如果它们在街区内或外部?

,它们的行为会有所不同吗?

您必须在重写规则之后编写重定向规则,因为它将首先检查它必须遵循的重写规则,然后重定向规则。

<VirtualHost *:80>
ServerName example.com
RewriteEngine on
RewriteRule ^.*$ "https://example2.com/catch-all/? [R=301, L]
Redirect permanent "/foo/bar/location1/" "https://example2.com/foo/baz/location1"
Redirect permanent "/foo/bar/location2/abc" "https://example2.com/foo/baz/location2/def"

最新更新