apache - mod_alias 与 mod_rewrite 优先级

标签 apache redirect mod-rewrite mod-alias

我有一个使用 mod_alias 的 Redirect 指令和 mod_rewrite 的 RewriteRule 的 apache 配置文件。

根据我的理解,mod_alias 按照文件从上到下的顺序工作,而 mod_rewrite 相反,匹配最后一条规则,除非你以 [L] 标志终止。

我的问题是,我的 Redirect 规则位于 RewriteRule 之上,但 RewriteRule 似乎仍在应用,所以我最终将所有人重定向到相同的 url。

我想要实现的是将某些位置重定向到另一个网络服务器,并使用 mod-rewrite 进行包罗万象,因此片段看起来像这样

<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]

此外,如果它们在 block 内或 block 外,它们的行为是否不同?

最佳答案

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

<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"

关于apache - mod_alias 与 mod_rewrite 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37813294/

相关文章:

apache - 无效命令 'ReWriteEngine'

apache别名与符号链接(symbolic link)

regex - 如何将 www 放在 htaccess 中的 wordpress 站点 url 前面?

apache - XAMPP本地主机未以管理员权限运行

java - 如何确保apache poi xwpf中的ctdocument属性顺序

asp.net - 将所有以 .aspx 结尾的旧 URL 重定向到某个 URL

asp.net - 重定向/发布到本地主机而不是外部域

apache - htaccess mod 重写具有多个参数的同一 URL

c - 在 bash 中运行 ./configure 并将 out/err 重定向到文件

.htaccess - 动态 .htaccess 重定向