我使用apache2和mod_rewrite作为开发环境的代理服务器。我需要能够重写一个传入的请求,其中我删除了主机域名的最后一部分。
示例:
原始-request:https://rc.example.com.dev.example.com/some/url
重写请求:https://rc.example.com/some/url
如果有人发送rc.example.com.dev.example.com请求,我需要能够剥离".dev.example.com“部分,并将HTTP_HOST部分重写为https://rc.example.com/some/url
我找到了很多关于如何从主机名开头删除www以及如何从主机名末尾删除国家缩写的文章。然而,在我发现的示例中,解决方案是将域名硬编码到重写的主机名中。我不知道主机名是什么,所以我不能硬编码它。我只知道我想从主机名的末尾删除什么,它是".dev.example.com“
我确信有一种方法可以使用变量来捕获主机名并删除".dev.example.com“部分,但我还没有找到这样的示例。
发布于 2021-04-22 10:42:04
这篇文章给了我答案:
apache mod_rewrite rule parse or split subdomain to find virtual host entry
我能够拼凑出这个:
RewriteCond %{HTTP_HOST} ^(.+)+[\.]dev[\.]example[\.]com [NC]
RewriteRule (.*)$ https://%1$1 [P] 我对此进行了测试,它可以正常工作。现在,我只需要弄清楚如何确定原始请求是http还是https,并确保重写的请求保持不变。但这是另一个问题。这个问题已经解决了。
https://stackoverflow.com/questions/67203067
复制相似问题