1

我正在尝试让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 文件的请求时,我缺少什么?

4

2 回答 2

4

如果您已经在集成管道模式下运行,那么包含的 UrlRewriting.net 模块应该会自动接收请求。只需添加:

<add name="phptoaspx"
     virtualUrl="^~/(.*).php"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="/$1.aspx"
     ignoreCase="true" />

到您的 /config/UrlRewriting.config 文件,一切都应该很好。

PS 你应该使用 customError 处理程序来处理 SEO 301/302'ing 内容。就可维护性而言,这可能是一个非常令人头疼的问题 - 请相信我,我在初级 .NET 开发人员时尝试过一次!

于 2011-02-23T17:17:09.240 回答
0

我不熟悉 Umbraco,但相信这就是您正在寻找的http://blogs.iis.net/ruslany/archive/2008/09/30/wildcard-script-mapping-and-iis-7-integrated-管道.aspx

当然,您必须添加自己的重写规则……所以这只会让您成功一半。

于 2011-02-18T22:42:32.390 回答