ASP.NET中的URL重写

ASP.NET中的URL重写,asp.net,url-rewriting,Asp.net,Url Rewriting,有人能告诉我哪种是ASP.NET 3.5 web应用程序URL重写的最佳技术吗 谢谢使用哪台web服务器 如果是ApacheHTTP服务器,那么可能是最好的选择 这篇文章可能是最好的总结,涵盖了主要的web服务器和web框架 还有一个选项,它是IIS 6和IIS 7的mod_rewrite clone,可与ASP.NET一起使用。最简单的解决方案是通过相同的脚本文件(即index.php)传递所有请求,然后用脚本代码解析URL。如何执行此操作取决于您的平台。如果您将IIS 7用于ASP.NET

有人能告诉我哪种是ASP.NET 3.5 web应用程序URL重写的最佳技术吗

谢谢

使用哪台web服务器

如果是ApacheHTTP服务器,那么可能是最好的选择

这篇文章可能是最好的总结,涵盖了主要的web服务器和web框架



还有一个选项,它是IIS 6和IIS 7的mod_rewrite clone,可与ASP.NET一起使用。

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

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

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


如果您使用的是ASP.NET 3.5 SP1,请改用ASP.NET UrlRouting。查看来自或来自的这篇伟大的文章。

丹尼尔·瓦萨洛是正确的,因为您需要使用UrlRewritingNet.UrlRewrite来完成这项工作

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

如果发现出现404错误,则可能是web.config中的URLRewite设置错误,或者是IIS中已签入“验证文件存在”。如果您要求,大多数主机将为您更改此设置


如果您不知道或没有能力在Web服务器上安装URL重写插件/模块,或者只需要简单的重写

下面是我在IIS6中重新编写URL的精简版本

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

这段代码将url/Store/Categories/重定向到/Store/Default.aspx?action=Categories当用户在其url中看到/Store/Categories/时,您的应用程序将url视为/Default.aspx?action=Categories并请求[“action”]。ToString()的值将为“Categories”


我正在用asp.net 3.5开发,这对Apache非常有用,但他似乎在使用IIS;我不知道现在其他人已经澄清,但在“正确”答案被接受之前(现在有人编辑了我的答案),删除我的答案是否是一种不好的形式…这是否意味着重定向请求?如果是,我不认为这是最好的解决方案。不,只需配置服务器,使所有请求都由同一个文件处理。不是通过网络浏览器,只是在服务器端。我在共享主机上,无法直接访问IIS,还有其他建议吗?在这种情况下,您可能需要考虑使用以下开源组件:一旦安装了模块,它就可以通过Web.CONFIG使用。我已经在IIS中使用了共享主机,如果还没有,请他们安装,他们可能会安装。我使用过很多方法,这是ASP.NET WebForms最简单的方法。通过重定向,应用程序会变慢吗?在我看来,这是一个非常简单的解决方案,它有任何缺点吗?我不会说这是一个比较我的方法是否非常有效的方法。我做了一些搜索,找到了一个与我类似的方法。它建议将此样式用于简单规则,并将模块用于更复杂的规则集。
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");
    }
}