我正在设置apache 2.4(docker)作为反向代理,以便将不同的子域分发给不同的docker服务。我使用Redirect
指令将http请求重定向到https。但是,一个特定的URL路径(域之后的部分)不应该被重新定义为https,而应该使用来自特定目录的文件。我正在尝试使用Alias
指令完成此操作,该指令不起作用。
我假设Redirect
凌驾于Alias
。真的吗?如果是这样的话,我怎么能完成我的目标呢?
<VirtualHost *:80>
ServerName service.example.com
Alias /exception/ /var/www/exception
Redirect permanent / https://service.example.com/
</VirtualHost>
我希望这可行,但事实并非如此。
首先,在处理别名之前处理所有重定向,因此与Redirect或RedirectMatch匹配的请求永远不会应用别名。其次,别名和重定向按照它们在配置文件中出现的顺序进行处理,第一次匹配优先。
要确保/exception/
不匹配,请使用允许正则表达式模式的RedirectMatch
:
RedirectMatch permanent "^/(?!exception/)(.*)" "https://service.example.com/$1"