【问题标题】:URL Redirect when there is no extension available没有可用扩展时的 URL 重定向
【发布时间】:2012-01-31 17:23:49
【问题描述】:

我想执行这样的重定向:

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

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

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

我将如何使用web.config 或 IIS 来做到这一点。

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 我知道这一点,升级服务器软件并不是一个真正的选择。无论如何,谢谢。
    • @VaibhavGarg 不会在链接中接近 2 对您有用吗?充其量,您可能能够使用 web.config 的重写器部分。在最坏的情况下,您必须编写一个 HttpModule 来通过代码处理它并更新 web.config 以使用它。
    • 你说得对,我说得太早了。我正在尝试这种方法,之后会报告。
    • 不幸的是,HTTPModule 不会为没有扩展名或未在 IIS6 中注册的扩展名的 URL 调用。有什么想法吗?
    • 创建通配符条目使其工作。只是测试看看它是否完全有效
    【解决方案2】:

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

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

    HeliconTech ISAPI Rewrite

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

    【讨论】:

    • 我不认为这对我有用,因为我需要在运行时确定最终 URL,即动态 URL 重定向
    【解决方案3】:

    在 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

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2012-12-20
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多