【问题标题】:SEO URL rewriting ASP.NETSEO URL 重写 ASP.NET
【发布时间】:2011-11-27 19:40:22
【问题描述】:

我已经有一个 ASP.NET 网站

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

我想改变前任。这个网站: www.mydomain.aspx?articleID=5

到: www.mydomain/article/learningURLrewrite - articlename 需要从数据库中读取

我该如何做到这一点?

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

我的目标是有一个类负责基于文件夹路径进行重定向(像这样):

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 扩展名

【问题讨论】:

  • 你能告诉你正在使用哪个版本的 iis,以及 .net 框架的版本。因为答案取决于这些东西。
  • 忘了说是.net 3.0
  • 我找到了这个网站thecodebug.com/?p=363 它建议创建一个处理重写的类。我想我会继续这样做,并在每次用户发送请求时为 id 调用数据库。如果有更好的方法请告诉我。

标签: asp.net url-rewriting seo


【解决方案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 的代码中,您可以像这样访问 url 路径:

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

【讨论】:

    【解决方案2】:

    这篇文章告诉你如何使用 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

    【讨论】:

      【解决方案3】:

      如果您使用的是 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 });
      

      很遗憾,我不会总结如何构建整个网站,但有两个非常好的起点是article by Scott Gu,一个是4 Guys

      【讨论】:

        【解决方案4】:

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

        1. http://urlrewriting.net
        2. http://urlrewriter.net

        我在 .net 3.5 制作的所有项目中都使用第二个

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

        1. URL路由(我觉得不支持子域重写)
        2. URL 重写 2.0(仅适用于 IIS 7)

        更新

        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 以便稍后如果您想更改 url 模式,您可以仅从配置中轻松更改它,

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

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

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

        感谢和问候,

        苛刻的要求

        【讨论】:

        • 我已经提供了第二个的代码示例,对你有用吗.. ?
        猜你喜欢
        • 2013-07-04
        • 2013-04-18
        • 2012-07-17
        • 2014-04-11
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 2014-11-11
        相关资源
        最近更新 更多