没有可用扩展名时的URL重定向

时间:2012-01-02 09:33:58

标签: asp.net redirect url-rewriting iis-6

我想执行这样的重定向:

http://www.example.com/something1
http://www.example.com/something2
http://www.example.com/something3

http://www.example.com/something1.aspx
http://www.example.com/folder/something2.pdf
http://www.example.com/something3.aspx?id=10

并仍然在浏览器中显示原始网址(引擎盖重定向)

环境是Windows Server 2003 SP2上的IIS 6 / Asp.Net 3.5

如何使用web.config或IIS执行此操作。

如果我可以将扩展名映射到aspnet_isapi.dll并使用Context.RewritePath(string),我知道如何处理重定向但我不知道如何为没有扩展名的网址执行此操作。

3 个答案:

答案 0 :(得分:1)

如果您能够迁移到ASP.NET 4,那么对无扩展URL重写有更多的支持。

但是,如果你必须使用ASP.NET 3.5 / IIS6,你可以在这里使用ScottGu的博客文章:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

答案 1 :(得分:1)

如果您必须坚持使用IIS6和/或较旧的.Net平台,Helicon Tech提供了一个出色的工具,可以为Microsoft IIS平台实现apache样式.htaccess规则。他们有付费版本,但也有免费版本。免费版仅限于处理一个规则文件,而付费版本可以有许多规则文件,可以嵌套到分层目录结构中。

我已经使用免费版本几年了,效果很好。唯一的问题是您必须能够访问服务器(除非您的主机已经支持,否则无法在共享主机环境中执行此操作)。

HeliconTech ISAPI Rewrite

编辑:为了澄清,它确实支持所有主要类型的重定向,包括将内容从一个URL代理到您想要的任何演示文稿URL。 Proxy Content Example Documentation

答案 2 :(得分:0)

在IIS下配置自定义404错误页面,例如error404.aspx,它位于您的网站中。在error404.aspx中,您可以访问我认为其Request.RawUrl的原始URL(您可能需要检查),然后您可以根据自己的喜好构建重定向或传输。

这可能有助于Accessing original URL in IIS7 404 redirect page

这可能是http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/80cb8d8d-8fd8-4af5-bb3b-4d11fff3ab9c.mspx?mfr=true