mod_alias vs mod_rewrite优先级

时间:2016-06-14 13:20:24

标签: apache redirect mod-rewrite mod-alias

我有一个apache配置文件,它使用mod_alias的protected $_canUseInternal = true; protected $_canUseCheckout = true; protected $_canUseForMultishipping = true; 指令和mod_rewrite的RewriteRule。

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

我的问题是,我的Redirect规则位于RewriteRule之上,但RewriteRule似乎仍在应用中,因此我最终将所有人重定向到同一个网址。

我想要实现的是将某些位置重定向到另一个网络服务器,并使用mod-rewrite进行全面搜索,这样一个代码段就像这样

Redirect

另外,如果它们在一个区域内或外面,这些行为会不同吗?

1 个答案:

答案 0 :(得分:2)

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

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