Apache HTTPD 将完整主机名添加到重定向 - 我们只想要路径



我们希望Apache HTTPD将所有流量从/重定向到/cx

RedirectMatch 301 ^/$ "/cx"

我们希望它返回以下带有 301 响应的标头:

Location: /cx

相反,它返回:

Location: http://internalhostname/cx

其中http://internalhostname是传入Host:请求标头包含的任何内容。

我们不希望这样,因为我们的服务器位于反向代理后面,并且外部的客户端无法处理http://internalhostname。当然,反向代理会将此internalhostname添加到请求中,但这是应该的。

为什么httpd要添加完整的主机名,我们如何阻止它?

使用UseCanonicalName OffUseCanonicalName On没有区别:始终添加主机名,但On它使用ServerName

我们通过重写 Location 标头来删除 prototcol、主机名和端口来解决此问题:

RedirectMatch 301 ^/$ "/cx/"
Header edit Location "(^http[s]?://)([a-zA-Z0-9.-]+)(:d+)?/" "/"

尝试将RedirectMatch指令替换为:

RewriteEngine on
RewriteRule ^/$ http://%{HTTP_HOST}/cx [NC,R=301]

相关内容

最新更新