SEO URL重写ASP.NET

时间:2011-09-29 15:28:09

标签: asp.net url-rewriting seo

我已经有一个ASP.NET网站

我想将我的网站更改为更友好的SEO网址。

我想改变前。这个网站: www.mydomain.aspx?条款ArticleID = 5

于: www.mydomain /条/ learningURLrewrite - 需要从DB

中读取文章名称

我如何做到这一点?

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

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

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 
}

我也想删除aspx扩展名

4 个答案:

答案 0 :(得分:1)

您也可以使用ASP.NET WebForms进行路由。

步骤如下:

  1. 在应用程序启动时添加路径(或路径)。

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

  3. 在Article.aspx的代码中,您可以像这样访问网址路径:

    public void Page_Load(object sender, EventArgs e)
    {
        var thePath = RouteData.Values["name"];
    
        // Lookup the path in the database...
    }
    

答案 1 :(得分:0)

此帖子告诉您如何使用asp.net 4的路由引擎 - 给它一个旋转 - 如果您在实现它时遇到特定问题,请告诉我们。

http://weblogs.asp.net/dotnetstories/archive/2011/01/03/routing-in-asp-net-4-0-web-forms.aspx

由于您需要特定的参数用法,您可以定义要发送到您的页面的参数。为此,请参阅: http://msdn.microsoft.com/en-us/library/cc668177.aspx

How to: Access URL Parameters in a Routed Page

答案 2 :(得分:0)

如果您使用的是ASP.NET 4,那么您应该查看URL Routing。您最终会设置自定义路线,如下所示:

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

你写出这样的新链接:

Page.GetRouteUrl("View Article", new { ArticleName= NAMEFROMDATABASE });

很遗憾,我不会向您提供有关如何构建整个网站的摘要,但有两个非常好的起点是article by Scott Gu,另一个位于4 Guys

答案 3 :(得分:0)

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

  1. http://urlrewriting.net
  2. http://urlrewriter.net
  3. 我在.net 3.5

    中制作的所有项目中使用第二个

    如果使用.net 4.0,那么你可以做这些

    1. URL路由(我认为它不支持子域重写)
    2. URL Rewrite 2.0(仅适用于IIS 7)
    3. 更新

      appSettings标记

      下添加这些行
      <rewriter configSource="URLRewriter.config"/>
      

      然后创建名为URLRewriter.config

      的单独文件

      并且你可以像这样写(为不要重写的文件添加处理停止,即图像和js等)

      <rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js|\.flv|\.eot|\.svg|\.ttf|\.woff|\.txt|\.doc|\.docx|\.pdf|\.xls|\.xlsx|\.xml)(\?.+)?)$" to="$1" processing="stop" />
      <rewrite url="~/article/([^/.]+)" to="~/articledetail.aspx?articlename=$1" />
      

      然后你会在查询字符串中得到文章名称,如下所示

      string articlename = Request.QueryString["articlename"];
      

      要将文章链接放在网站的菜单或其他位置,您可以添加AppSettings,以便稍后如果您想要更改网址模式,您可以轻松地从配置中更改它,

        <add key ="ArticalDetailsURL" value="/article/{0}" />
      

      然后,在页面中你可以这样做

      string articleName = "TestArticle";
      lnkMenuLink.NavigateUrl = string.Format(ConfigurationSettings.AppSettings["ArticalDetailsURL"], articleName);
      

      谢谢和问候,

      Harsh Baid