有人可以建议我哪个是ASP.NET 3.5 Web应用程序的URL重写的最佳技术吗?
由于
答案 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");
}
}