SEO URL重写ASP.NET

SEO URL重写ASP.NET,asp.net,url-rewriting,seo,Asp.net,Url Rewriting,Seo,我已经有了一个ASP.NET网站 我想改变我的网站,使之更加SEO url友好 我想更改示例。此站点: www.mydomain.aspx?articleID=5 致: www.mydomain/article/learningURLrewrite -articlename需要从DB中读取 我如何做到这一点 我已经尝试过谷歌的一些文章,其中提到IhttpModule,但没有任何运气 我的目标是让一个类负责基于folderpath的重定向(如下所示): 此外,我还想删除aspx扩展这篇文章准确地告

我已经有了一个ASP.NET网站

我想改变我的网站,使之更加SEO url友好

我想更改示例。此站点: www.mydomain.aspx?articleID=5

致: www.mydomain/article/learningURLrewrite -articlename需要从DB中读取

我如何做到这一点

我已经尝试过谷歌的一些文章,其中提到IhttpModule,但没有任何运气

我的目标是让一个类负责基于folderpath的重定向(如下所示):


此外,我还想删除aspx扩展

这篇文章准确地告诉您如何使用asp.net 4的路由引擎-试一试-如果您在实现它时遇到特定问题,请告诉我们

因为您需要特定的参数用法,所以可以定义要发送到页面的参数。为此,请参见:


如果您使用的是ASP.NET 4,那么您应该研究URL路由。您最终将设置自定义路由,如下所示:

routes.MapPageRoute(
      "View Article",               // Route name
      "Articles/{*ArticleName}",  // Route URL
      "~/Articles.aspx"      // Web page to handle route
   );
Page.GetRouteUrl("View Article", new { ArticleName= NAMEFROMDATABASE });
你可以这样写下新的链接:

routes.MapPageRoute(
      "View Article",               // Route name
      "Articles/{*ArticleName}",  // Route URL
      "~/Articles.aspx"      // Web page to handle route
   );
Page.GetRouteUrl("View Article", new { ArticleName= NAMEFROMDATABASE });

不幸的是,我不会给你一个如何构建整个网站的摘要,但有两个真正好的起点是,一个在上。

你也可以在ASP.NET WebForms中使用路由

这些步骤是:

  • 在应用程序启动时添加路由

    //In Global.asax
    void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.MapPageRoute("My Routename", "{*name}", "~/Article.aspx");
    }
    
  • 将Article.aspx创建为普通Web表单

  • 在Article.aspx的代码中,您可以访问url路径,如下所示:

    string folderpath = "my folderpath" (could be articles, products etc.)
    string id = Request.QueryString["id"].ToString();
    
    if(folderpath.equals("articles"))
    {
       string name = //find name from id in DB
       //redirect user to www.mydomain/article/name 
    }
    
    if(folderpath.equals("products"))
    {
       string name = //find name from id in DB
       //redirect user to www.mydomain/products/name 
    }
    
    public void Page_Load(object sender, EventArgs e)
    {
        var thePath = RouteData.Values["name"];
    
        // Lookup the path in the database...
    }
    

  • 如果您使用的是.net 3.5或更低版本,则可以使用这些

  • 我在所有用.NET3.5制作的项目中都使用了第二个

    如果使用.NET4.0,则可以执行以下操作

  • URL路由(我认为它不支持子域重写)
  • URL重写2.0(仅适用于IIS 7)
  • 更新 将这些行添加到
    appSettings
    标记下方

    <rewriter configSource="URLRewriter.config"/>
    
    然后在查询字符串中获得项目名称,如下所示

    string articlename = Request.QueryString["articlename"];
    
    string articleName = "TestArticle";
    lnkMenuLink.NavigateUrl = string.Format(ConfigurationSettings.AppSettings["ArticalDetailsURL"], articleName);
    
    以及要将链接放置到文章的网站的菜单或其他位置,您可以在AppSettings中添加一个链接,以便以后如果您要更改url模式,可以仅从配置中轻松更改它

      <add key ="ArticalDetailsURL" value="/article/{0}" />
    
    感谢和问候


    Harsh Baid

    您能告诉我您使用的是哪个版本的iis吗?请告诉我.net framework的版本。。Bcoz答案取决于这些。忘了提到它是.NET3.0。我找到了这个网站,它建议创建一个处理重写的类。我想我会这样做,并在每次用户发送请求时调用数据库获取id。如果有更好的方法,请让我知道。检查更新的答案-我已经为第二个提供了代码示例,这对您有用吗?