【发布时间】:2021-04-21 20:31:59
【问题描述】:
我使用 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 配置?或者您想重定向用户的浏览器以请求新的 URL?另外,您能否展示一些您发现的看起来很接近但不是您想要的示例?
-
我希望 apache 服务器将原始请求转发到位于 rc.example.com(或任何域)的目标服务器,并将回复返回给原始请求者。 apache 服务器充当代理。 apache 代理查看传入请求中的主机名并剥离主机名的代理部分,然后在目标主机上转发请求。我的代理是主机是 dev.example.com,如果传入的请求是针对 some-other-internal-domain.com.dev.example.com 然后 mod_rewrite 将其重写为 some-other-internal-domain.com/some/url 现在获取链接。
-
现在我找不到那个人想要从 http_host 中删除 .br 国家/地区代码的 stackoverflow 帖子。那篇文章展示了如何删除 .br 部分但保留其余部分,但其余部分是硬编码的。好的,我又找到了:stackoverflow.com/questions/5970945/…
-
这里是显示如何删除 http_host 开头的 www 但也是硬编码的帖子:a2hosting.com/kb/developer-corner/apache-web-server/…
标签: apache mod-rewrite