ASP dot NET中搜索引擎友好的URL

时间:2009-03-16 12:00:57

标签: c# asp.net asp.net-2.0

目标是:

更改 details.aspx?GUID = 903901823908129038 等网页,以清除 / adrian_seo

等网页

取得: 现在使用Response.AddHeader(“Location”,url);

我可以删除所有大写网址。我使用以下函数:

protected void Page_Load(object sender, EventArgs e)
{
    string url = Request.Url.ToString();
    if (url != Request.Url.ToString().ToLower())
    {
        url = Request.Url.ToString().ToLower();
        Response.Status = "301 Moved Permanently";
        Response.AddHeader("Location", url);
    }
}

问题是:

如何更改这些内容以清除/ adrian_seo

等网址

我的意思是如何处理来到/ adrian_seo的请求以及如何使用新网址显示旧页面。

我需要使用Global.asax吗?

5 个答案:

答案 0 :(得分:6)

查看ASP.NET routing

答案 1 :(得分:1)

使用HttpModule:

  public void Init(HttpApplication context)
  {
    context.BeginRequest += new EventHandler(context_BeginRequest);
  }

  void context_BeginRequest(object sender, EventArgs e)
  {
    HttpContext context = ((HttpApplication)sender).Context;
    if (context.Request.RawUrl.ToLowerInvariant().Equals("YOURSEOURL"))
      context.RewritePath("YOURNONSEOURL");
  }

请注意,您不想对所有这些进行硬编码。找到一些匹配你需要的正则表达式,比如SEO网址是:/ page / 234234 /这是我的页面标题,你抓住234234并重写路径到page.aspx?pageid = 234234

UPDATE 您也可以使用IIS 7 Rewrite Module

答案 2 :(得分:1)

我建议使用UrlRewritingNet组件。在编写自己的库时,你需要克服一些困难,这个库已经为你处理了这些东西......

  

这是一个重写模块   ASP.NET 2.0,并提供

支持      
      
  • 主题和主页
  •   
  • 正则表达式
  •   
  • Good Postback-Urls
  •   
  • 无Cookie会话
  •   
  • 在共享托管或中等信托环境中运行
  •   
  • 支持OutputCache
  •   
  • 可以重定向,甚至可以重定向到其他域
  •   

要在IIS 6或更低版本的asp.net中启用无扩展网址,您还需要configure IIS让asp.net处理所有传入请求。

答案 3 :(得分:0)

您可以使用可在asp.net 1.1上使用的http://urlrewriter.net/ - >

答案 4 :(得分:0)

在Asp.net上阅读路由之后:

http://blog.eworldui.net/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx

这为SEO页面排名和Asp.net路由提供301重定向,用于永久性有机SEO解决方案。