Apache mod_rewrite删除域名的最后一部分,同时保留URL的其余部分

Apache mod_rewrite删除域名的最后一部分,同时保留URL的其余部分,apache,mod-rewrite,Apache,Mod Rewrite,我使用apache2和mod_rewrite作为开发环境的代理服务器。我需要能够重写传入的请求,删除主机域名的最后一部分 例如: 原件-请求: 重写请求: 如果有人向rc.example.com.dev.example.com发送请求,我需要能够剥离“.dev.example.com”部分并将HTTP_主机部分重写为 我找到了很多关于如何从主机名开头删除www以及如何从主机名末尾删除国家缩写的文章。然而,在我发现的示例中,解决方案是在重写的主机名中硬编码域名。我不知道主机名是什么,所以我不能硬编

我使用apache2和mod_rewrite作为开发环境的代理服务器。我需要能够重写传入的请求,删除主机域名的最后一部分

例如:

原件-请求:

重写请求:

如果有人向rc.example.com.dev.example.com发送请求,我需要能够剥离“.dev.example.com”部分并将HTTP_主机部分重写为

我找到了很多关于如何从主机名开头删除www以及如何从主机名末尾删除国家缩写的文章。然而,在我发现的示例中,解决方案是在重写的主机名中硬编码域名。我不知道主机名是什么,所以我不能硬编码。我只知道我想从主机名的末尾删除什么,它是“.dev.example.com”


我确信有一种方法可以使用变量捕获主机名并删除“.dev.example.com”部分,但我还没有找到这样的示例。

这篇文章为我提供了答案:

我能够拼凑起来:

RewriteCond %{HTTP_HOST} ^(.+)+[\.]dev[\.]example[\.]com [NC]

RewriteRule (.*)$ https://%1$1 [P]    

我测试了这个,它是有效的。现在我只需要弄清楚如何确定原始请求是http还是https,并确保重写的请求保持不变。但这是另一个问题。这个问题解决了。

您希望它产生什么效果?是否需要编辑的主机名对应用程序可见,例如在环境变量中?或者您需要基于它加载其他Apache配置吗?还是要重定向用户的浏览器以请求新的URL?另外,您可以展示一些您发现的看起来很接近但不完全符合您需要的示例吗?我希望apache服务器将原始请求转发到rc.example.com(或任何域)上的目标服务器上,并将回复返回给原始请求者。apache服务器充当代理。apache代理查看传入请求中的主机名,去掉主机名的代理部分,然后在目标主机上转发请求。我的代理是主机是dev.example.com,如果传入的请求是针对some-other-internal-domain.com.dev.example.com的,那么mod_rewrite会将其重写为“立即获取链接”。现在我找不到stackoverflow帖子,该帖子中有人想要从http_主机中删除.br国家代码。这篇文章展示了如何删除.br部分,但留下其余部分,但其余部分是硬编码的。好的,我又找到了:这篇文章展示了如何删除http_主机开头的www,但它也是硬编码的: