【问题标题】:URL Rewriting in ASP.NET [closed]ASP.NET 中的 URL 重写 [关闭]
【发布时间】:2009-12-30 09:44:38
【问题描述】:

谁能建议我为 ASP.NET 3.5 Web 应用程序重写 URL 的最佳技术?

谢谢

【问题讨论】:

    标签: asp.net url-rewriting


    【解决方案1】:

    如果您将 IIS 7 用于 ASP.NET 应用程序,您可能需要下载:

    如果您使用的是 IIS 6 或 IIS 5,您可能需要考虑使用以下开源组件:

    【讨论】:

    • 我在共享主机上,无法直接访问 IIS,还有其他建议吗?谢谢
    • 在这种情况下,您可能需要考虑使用以下开源组件:urlrewriting.net
    • 模块安装完成后,通过web.config即可使用。我已经在 IIS 中使用了共享主机,如果还没有,那么请他们安装它,他们可能会安装它。我用过很多方法,这个对于 ASP.NET WebForms 来说是最简单的。
    【解决方案2】:

    使用哪个网络服务器?

    如果是 Apache HTTP 服务器,那么mod_rewrite 可能是您最好的选择。

    Wikipedia article 可能总结得最好,涵盖了主要的 Web 服务器和 Web 框架。


    还有URL Rewriter And Reverse Proxy 选项,它是 IIS 6 和 IIS 7 的 mod_rewrite 克隆,可与 ASP.NET 配合使用。

    【讨论】:

    • 我在 asp.net 3.5 中开发
    • 对 Apache 非常有用,但他似乎在使用 IIS。
    • 确实,但原问题当时并没有具体说明;我不知道现在其他人已经澄清,但在“正确”答案被接受之前(现在有人编辑了我的答案)删除我的答案是否是不好的形式......
    【解决方案3】:

    如果您使用的是 ASP.NET 3.5 SP1,请改用 ASP.NET UrlRouting。查看来自Chris Cavanagh 的这篇精彩文章或来自Phil Haack 的这篇文章。

    【讨论】:

      【解决方案4】:

      Daniel Vassallo 是正确的,您需要使用 UrlRewritingNet.UrlRewrite 来完成这项工作。

      但是,我现在要警告您,大多数主机(根据我的经验)没有正确设置来处理 URL 重写。

      如果您发现您收到 404 错误,那么您的 URLRewrite 设置在 web.config 中是错误的,或者他们在 IIS 中检查了“验证文件是否存在”。如果您要求,大多数主机都会为您更改此设置。

      http://forums.asp.net/p/890825/1017645.aspx

      http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

      【讨论】:

        【解决方案5】:

        最简单的解决方案是通过同一个脚本文件(即到 index.php)传递所有请求,然后用脚本代码解析 URL。如何执行此操作取决于您的平台。

        【讨论】:

        • 这是否意味着重定向请求?如果是,我认为这对我来说不是最好的解决方案。
        • 不,只需配置服务器,使所有请求都由同一个文件处理。不是通过浏览网络浏览器,而是在服务器端。
        【解决方案6】:

        如果您不具备将 URL 重写插件/模块安装到您的网络服务器的知识或能力,或者只需要简单的重写。

        下面是我在 IIS 6 中进行的 URL 重写的精简版本。

        这是一个非常基本的 URL 重写版本,您可以将其放入您网站根目录的 Global.asaxGlobal.asax.cs 文件中。

        当用户看到 / Store/Categories/ 在他们的 URL 中,您的应用程序将 URL 视为 /Default.aspx?action=categoriesRequest["action"].ToString() 将具有“类别”的值

        void Application_BeginRequest(object sender, EventArgs e)
        {
            string fullOriginalpath = Request.Url.ToString().ToLower();
        
            if (fullOriginalpath.Contains("/store/categories/"))
            {           
                Context.RewritePath("/Store/Default.aspx?action=categories");           
            }
            else if (fullOriginalpath.Contains("/store/products/"))
            {
                Context.RewritePath("/Store/Default.aspx?action=products");
            }
        }
        

        【讨论】:

        • 通过重定向应用程序会变慢吗?
        • 在我看来这是一个非常简单的解决方案,它有什么缺点吗?
        • 我不会说这是我的方法是否非常有效的比较。我做了一些搜索,发现了一种与我类似的方法。它建议将这种样式用于简单的规则,将模块用于更复杂的规则集。 developer.com/net/article.php/3703901/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-25
        • 2013-12-01
        • 2013-03-05
        • 2010-09-06
        • 2021-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多