【发布时间】:2015-08-11 20:32:39
【问题描述】:
我们有一个新的 Sitefinity 网站正在取代我们的营销网站。切换发生在上周五,今天我们发现了一个问题:旧站点上的内容(pdfs,jpgs)不再可以访问,并且没有将其纳入内容迁移计划。最重要的是,管理层已将回滚作为选项删除。
所以,我想出的解决方案是使用 IIS 7 的 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?
【问题讨论】:
-
{URL} 的最后一个条件是什么?
-
匹配具有扩展名的请求。 Sitefinity 使用重写会产生类似 www.site.com/page 的名称,最后一次检查假定所有这些都正常,并且不会尝试重定向它们。但是,对于我要解决的问题来说,这是不必要的。
标签: iis-7 url-rewriting sitefinity