如何解决mod_rewrite 删除域名的最后一部分,同时保留 URL 的其余部分
我使用 apache2 和 mod_rewrite 作为开发环境的代理服务器。我需要能够重写传入的请求,在其中删除主机域名的最后一部分。
示例:
原始请求: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”部分,但我还没有找到这方面的示例。
解决方法
这篇文章为我提供了答案:
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 并确保我保持重写的请求相同。但这是另一个问题。这个就解决了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。