我正在尝试让Umbraco的301 URL Tracker 包按照我的喜好工作。
我的目标是能够将旧 URL(来自另一个 CMS)映射到新的 Umbraco URL。在我的具体情况下,旧站点是基于 PHP 的,因此使用 .php 文件扩展名(http://example.net/test.php -> http://example.net/test/) - 但它可以是任何非 .aspx 扩展名(asp、png 等)。问题是 Umbraco 没有处理对 .php 文件的请求。它适用于 .aspx 和目录(无扩展名 URL)。
我已经尝试了各种方法来让它发挥作用。在继续之前,我应该注意应用程序池处于集成模式和 .NET 4.0。
我通过在 web.config 中定义一个自定义错误来让它工作:
<customErrors defaultRedirect="not-exists.aspx" />
这会触发 Umbraco 配置文件 404handlers.config 中 NotFoundHandlers 中定义的处理程序。但是在 301 URL 跟踪器启动并处理 301 重定向之前,会返回 302 Found 标头的副作用。而这只是一个大的 SEO“不不”。
然后,我尝试为 .php 文件显式创建 HTTP 处理程序模块。我成功获得了 System.Web.UI.PageHandlerFactory 模块来处理对 .php 文件的请求。但这不会调用 Umbraco 中的任何 NotFoundHandler。
据我了解 IIS 7 中的集成管道,所有注册的模块都应尝试处理请求(http://stackoverflow.com/questions/3765317/how-to-catch-non-aspx-files-with-a-http -模块)。但也许有人可以在这个问题上启发我?
其他人在使此配置正常工作时也遇到了困难:http: //our.umbraco.org/projects/developer-tools/301-moved-permanently/feedback/7271-when-the-old-pages-are-not -来自-umbraco
在让 Umbraco 在集成管道模式下处理对非 .aspx 文件的请求时,我缺少什么?