我们有一个新的 Sitefinity 网站正在取代我们的营销网站。上周五的切换,今天我们发现了一个问题:旧网站有内容(pdfs、jpgs)无法再访问,并且没有纳入内容迁移计划。最重要的是,管理层已将回滚作为选项删除。
因此,我想出的解决方案是使用 IIS 7 的 url 重写模块指向一个新的 url,该 url 承载旧站点,以便可以访问内容。这是我想出的 web.config 中的 xml:
<rewrite>
<rules>
<rule name="RedirectFileNotFound" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{URL}" negate="false" pattern="/\.*$" />
</conditions>
<action type="Redirect" url="http://www.oldsite.com{REQUEST_URI}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
它会尝试测试 URL 是否解析为文件或文件夹,并确保我们正在请求带有扩展名的内容。如果规则通过,它将重定向到旧站点上的相同位置。理想情况下,这意味着以前链接到旧站点的任何内容都可以单独放置。
问题是,没有任何东西被重定向。
通过摆弄规则,我已经验证了该模块是可操作的,即我可以将其设置为重写所有内容,并且它可以工作。但这些规则不起作用。
我的理论是,由于 Sitefinity 使用数据库存储,它以某种方式短路了“IsFile”匹配类型。完全猜测,但在这一点上我有点不知所措。
如何以这种方式使用 urlrewriting 重定向 404?