在 asp.net 3.5 中重写 URL 而不带 IIS

本文关键字:URL IIS 重写 asp net | 更新日期: 2023-09-27 18:37:10

我正在使用 asp.net 3.5 版本中的应用程序 asp.net 该应用程序。我需要实现 URL 重写。我已经定义了 4 个页面,例如

www.abc.com/page1.aspx
www.abc.com/page2.aspx
www.abc.com/page3.aspx
www.abc.com/page4.aspx

我希望当用户键入 www.abc.com/language1 然后www.abc.com/page1.aspx 打开。如果用户键入 www.abc.com/language2,则应打开 www.abc.com/page2.aspx。

请提出解决方案。

此外,由于该站点是完整的并且通过电子邮件向用户发送链接(并且某些链接具有查询字符串),将用户重定向到没有查询字符串的新 URL 并使用新模式生成新链接的最佳方法是什么?

我已经经历了以下技术:

http://www.iis.net/downloads/microsoft/url-rewrite(这是IIS,我可以在 asp.net 3.5和没有IIS的情况下使用它吗?

ASP.NET 以非常简单的方式重写 URL (它没有经过安全问题测试)

http://www.hanselman.com/blog/IntroducingASPNETFriendlyUrlsCleanerURLsEasierRoutingAndMobileViewsForASPNETWebForms.aspx (这需要更改现有链接?

请建议

在 asp.net 3.5 中重写 URL 而不带 IIS

public class Global : System.Web.HttpApplication
{
    void RegisterRoutes(RouteCollection routes)
    {
        routes.Add(new Route("language2", new PageRouteHandler("~/page2.aspx")));
    }
    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }
}
您可以在

Global.asax 文件中的 Application_BeginRequest 下执行此操作,检查请求是否来自指定的 URL,然后将用户重定向到另一个页面,例如:if(Request.Url.ToString()。ToLower()。包含("language1.aspx"),然后是 Response.Redirect("Page1.aspx") 。