ASP.NET中的URL重写

时间:2009-12-29 13:53:34

标签: asp.net url-rewriting

有人可以建议我哪个是ASP.NET 3.5 Web应用程序的URL重写的最佳技术吗?

由于

6 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

使用哪个Web服务器?

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

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


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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

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

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果您没有知识或能力安装URL重写插件/模块到您的网络服务器或只需要简单的重写。

以下是我在IIS 6中执行的URL重写的简化版本。

以下是一个非常基本的网址重写版本,您可以将其放入网站根目录中的 Global.asax Global.asax.cs 文件中。< / p>

这段代码在用户看到 / Store /时将网址 / Store / Categories / 重定向到 /Store/Default.aspx?action=categories 类别/ 在其网址中,您的应用会将网址视为 /Default.aspx?action=categories 请求[“操作”] .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");
    }
}