【问题标题】:URL Rewrite for Host Header is not working using IIS in asp.net主机标头的 URL 重写在 asp.net 中使用 IIS 不起作用
【发布时间】:2020-04-10 22:08:39
【问题描述】:

我不想重定向任何恶意链接或用户重定向到其他域。相反,它应该重定向到我提到的域。为此,我在下面写了 Rewrite URL rul​​e by using IIS server

<rewrite>
  <rules>
    <clear />
    <rule name="Redirect to https" stopProcessing="true">
      <match url=".*" />
      <conditions>
                    <add input="{HTTPS}" pattern="off" />
                    <add input="{HTTP_HOST}" matchType="Pattern" pattern="^([a-zA-Z0-9-_]+.)https://nvmbd1bkh150v02.rjil.ril.com$" ignoreCase="true" negate="true" />
      </conditions>
      <action type="Redirect" url="https://nvmbd1bkh150v02.rjil.ril.com/FiberInventoryPortal" redirectType="Permanent" appendQueryString="false" />
    </rule>

  </rules>
</rewrite>

但是这里发生的事情是,我所有的应用程序 CSS 都受到了干扰。请建议在这种情况下我应该怎么做。

【问题讨论】:

标签: c# asp.net iis url-rewriting hostheaders


【解决方案1】:

根据您的 url 重写代码,我发现您会将所有请求重定向到 https://nvmbd1bkh150v02.rjil.ril.com/FiberInventoryPortal 包含 CSS 文件。这就是您的 CSS 文件无法正常工作的原因。

如果您的 css 文件也在新站点的 FiberInventoryPortal 文件夹中。我建议你可以试试下面的 url 重写规则。

<rewrite>
  <rules>
    <clear />
    <rule name="Redirect to https" stopProcessing="true">
      <match url=".*" />
      <conditions>
                    <add input="{HTTPS}" pattern="off" />
                    <add input="{HTTP_HOST}" matchType="Pattern" pattern="^([a-zA-Z0-9-_]+.)https://nvmbd1bkh150v02.rjil.ril.com$" ignoreCase="true" negate="true" />
      </conditions>
      <action type="Redirect" url="https://nvmbd1bkh150v02.rjil.ril.com/FiberInventoryPortal/{R:0}" redirectType="Permanent" appendQueryString="false" />
    </rule>

  </rules>
</rewrite>

【讨论】:

  • 所以它会重定向到关闭其他域的所有其他链接到https://nvmbd1bkh150v02.rjil.ril.com/FiberInventoryPortal 对吗?
  • 是的,它会在FiberInventoryPortal 的末尾自动添加 url 路径。我猜你想在nvmbd1bkh150v02.rjil.ril.com 站点上获取 css 文件。
  • 不仅是css文件,当任何未知用户通过一些打嗝工具插入其他域链接时,它应该重定向到我提到的域
  • 发生了什么事,伙计?您的上述代码是否适合我的要求?我应该与测试团队重新测试吗?
  • 您可以告诉我们您要使用 url rewrite 生成哪个 CSS url。例如旧的 css url 是 xxxx,新的 css url 是 xxx。然后我们可以根据您的描述生成重写规则。
【解决方案2】:

不确定“恶意”链接是什么意思,但我猜你希望访问者只使用特定的主机名。此外,每个 URL 都应始终以 /FiberInventoryPortal/ 开头。

所以这可能就是你想要的:

<rewrite>
    <rules>
        <clear />
        <rule name="Force HTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" negate="true" pattern="^ON$" />
                <add input="{HTTP_HOST}" negate="true" pattern="^nvmbd1bkh150v02\.rjil\.ril\.com$" />
            </conditions>
            <action type="Redirect" url="https://nvmbd1bkh150v02.rjil.ril.com{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
        </rule>
        <rule name="Redirect to FiberInventoryPortal" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/FiberInventoryPortal/" ignoreCase="true" negate="true" />
            </conditions>
            <action type="Redirect" url="https://nvmbd1bkh150v02.rjil.ril.com/FiberInventoryPortal/{R:0}" redirectType="Permanent" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>

【讨论】:

  • 是的,我希望该用户不能重定向到其他域..
  • 试过了,但它不起作用。仍然重定向到www.abc.com
  • 抱歉打断...它现在工作正常 :) 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多