Redirect指令是否覆盖已配置的别名

问题描述 投票:1回答:1

我正在设置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>

我希望这可行,但事实并非如此。

apache redirect virtualhost httpd.conf mod-alias
1个回答
2
投票

来自mod_alias docs

首先,在处理别名之前处理所有重定向,因此与Redirect或RedirectMatch匹配的请求永远不会应用别名。其次,别名和重定向按照它们在配置文件中出现的顺序进行处理,第一次匹配优先。

要确保/exception/不匹配,请使用允许正则表达式模式的RedirectMatch

RedirectMatch permanent "^/(?!exception/)(.*)" "https://service.example.com/$1"
© www.soinside.com 2019 - 2024. All rights reserved.