【问题标题】:Directing a local URL to another public facing one将本地 URL 定向到另一个面向公众的 URL
【发布时间】:2020-01-16 17:44:28
【问题描述】:

我正在尝试在本地测试 Web 应用程序。这在诸如https://abc 之类的域上运行

我们有一些服务是在直接链接上创建的,例如/services/findmesomething

这些服务无法在本地运行,因此我希望将它们指向我们的 QA 资源,这些资源位于公共链接上,例如 https://abc.somedomain.com/。更具体地说,我想向https://abc.somedomain.com/services/findmesomething请求数据

https://abc/services/findmesomething >> 应该指向 >> https://abc.somedomain.com/services/findmesomething

【问题讨论】:

  • 您的问题非常不清楚。 URL 不指向其他 URL,它们定义资源位置。 “服务不能在本地工作”非常模糊——总是有一个主机,总是。当通过例如服务时,事情不会起作用。 file 计划?因此,“本地”一词没有明确的含义,“abc”可能指的是 LAN 或 WAN 上的主机,它是什么? “请求数据”可以是很多事情。抱歉,我想帮忙,我很确定我可以,但我只是不知道你的问题是什么。
  • 好的,由于相关的数据库连接在本地不可用,因此相关服务无法在本地运行。它们已经为我们位于公共域的 QA 环境进行了配置。这个想法是将请求流量/帖子从本地域引导到公共域。问题是这是否可以通过主机文件更改或其他方式来完成,或者它应该是应用程序中的代码更改。希望这能给这个问题带来一些启示。

标签: iis web-applications localhost hosts hosts-file


【解决方案1】:

如果模式是services/findmesomething,您似乎想将url指向abc.somedomain.com

如果这是您的要求,我建议您可以考虑使用 url rewrite。你可以从这个url 安装它。

那么我建议你可以将下面的配置添加到你的 web.config 中。

<system.webServer>
    <rewrite>
        <rules>
            <rule name="test">
                <match url="services(.*)" />
                <action type="Rewrite" url="https://abc.somedomain.com/{R:0}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

更新url重写规则:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="test">
                <match url="services(.*)" />
         <conditions>
         <add input="{REMOTE_ADDR}" pattern="the server IP address" />
         </conditions>
                <action type="Rewrite" url="https://abc.somedomain.com/{R:0}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

【讨论】:

  • 问题是我们只希望这发生在本地。所以想知道如果没有代码更改/其他地方是否有可能。因为最终我们可以对请求进行 isLocal 检查并更改 URL
  • 您可以尝试使用条件检查客户端IP地址,如果客户端IP地址是您的服务器IP,则此url重写规则将起作用。关于url重写规则的更多细节,你可以参考我的更新答案。
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
相关资源
最近更新 更多