重定向指令是否覆盖配置的别名
Does the Redirect directive override configured Aliases
我正在将 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>
我预计这会起作用,但它不起作用。
First, all Redirects are processed before Aliases are processed, and
therefore a request that matches a Redirect or RedirectMatch will
never have Aliases applied. Second, the Aliases and Redirects are
processed in the order they appear in the configuration files, with
the first match taking precedence.
要确保 /exception/
不匹配,请使用允许正则表达式模式的 RedirectMatch
:
RedirectMatch permanent "^/(?!exception/)(.*)" "https://service.example.com/"
我正在将 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>
我预计这会起作用,但它不起作用。
First, all Redirects are processed before Aliases are processed, and therefore a request that matches a Redirect or RedirectMatch will never have Aliases applied. Second, the Aliases and Redirects are processed in the order they appear in the configuration files, with the first match taking precedence.
要确保 /exception/
不匹配,请使用允许正则表达式模式的 RedirectMatch
:
RedirectMatch permanent "^/(?!exception/)(.*)" "https://service.example.com/"