【问题标题】:IIS URL Rewrite Rule Ignored when Path is Part of Virtual Directory当路径是虚拟目录的一部分时忽略 IIS URL 重写规则
【发布时间】:2021-05-28 02:39:24
【问题描述】:

我正在尝试在 IIS 中创建 URL 重写规则,将用户重定向到新网页。规则的路径是包含在虚拟目录中的已删除 PDF 文件。我在现有网站上使用此规则,但在我们使用 .Net 核心的新/更新网站上 - 该规则不起作用(返回 404 状态代码)。虚拟目录设置相同 - /pdf。如果是虚拟目录,则似乎完全忽略该规则。

Website
│   New_Web_Page
└───pdf (virtual directory)
│   │   A_PDF_File.pdf
<rule name="PDF Redirect Rule" stopProcessing="true">
  <match url="pdf/A_PDF_File.pdf" />
  <action type="Redirect" url="New_Web_Page" redirectType="Permanent"  />
</rule>

【问题讨论】:

  • 如果 url 重写对您的业务很重要,我认为您应该尝试将该任务委托给 asp.net core 中间件。依赖IIS 可以让您的团队熟悉,但它当然不灵活,例如当您的应用需要使用其他主机类型部署时,例如:docker。当然,无论如何,这与您想要的 IIS 有点不合。
  • 不幸的是,该站点有多个应用程序。其他 web 应用程序是 asp.net web 表单,并依赖其中一些虚拟目录来运行。我们的目标是在有时间重写这些遗留应用程序(或将它们包含在新站点中)时最终消除它们。

标签: asp.net-core iis url-rewriting


【解决方案1】:

使用适当的重写规则将 web.config 文件放置在虚拟目录中可以解决此问题。需要更改规则以匹配文件的位置。规则是:

<rule name="PDF Redirect Rule" stopProcessing="true">
  <match url="A_PDF_File.pdf" />
  <action type="Redirect" url="/New_Web_Page" redirectType="Permanent"  />
</rule>

目录现在看起来像这样:

Website
│   New_Web_Page
└───pdf (virtual directory)
│   │   A_PDF_File.pdf
│   │   web.config

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 2019-06-06
    • 1970-01-01
    • 2018-11-13
    • 2019-03-13
    • 2019-09-09
    • 2010-10-11
    • 2017-10-10
    • 2015-08-26
    相关资源
    最近更新 更多