• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發C#.NET → ASP.NET的SEO:使用.ashx文件——排除重復內容

    ASP.NET的SEO:使用.ashx文件——排除重復內容

    相關軟件相關文章發表評論 來源:自由飛時間:2010/2/21 23:54:55字體大?。?em class="fontsize">A-A+

    作者:不詳點擊:300次評論:0次標簽: SEO

    981SEO助手v1.2 綠色版
    • 類型:站長工具大?。?i>4.6M語言:中文 評分:.0
    • 標簽:
    立即下載

    不同的鏈接指向的頁面如果具有大量相同的內容,這種現象就會被稱為“重復內容”,如果一個網站的重復內容很多,搜索引擎就會認為這個網站的價值不高。所以我們應盡量避免各種重復內容。

    動態網站的重復內容常常是由URL參數引起的,而URL重寫會惡化這一現象(比較耐人尋味喲,呵呵)。因為如果使用的是原始的URL參數的話,搜索引擎可能會進行適當的判斷,而得知重復內容是由URL參數引起的,自動的進行相應的處理;而URL重寫會掩蓋URL參數,反而使得搜索引擎無法識別URL參數。比如:

     

    原始的URL:
    http://www.freeflying.com/articles.aspx?id=231&catelog=blog
    http://www.freeflying.com/articles.aspx?id=231&catelog=news

    經過URL重寫過后的URL:
    http://www.freeflying.com/blog/231.html
    http://www.freeflying.com/news/231.html

    這些URL所指向的頁面內容其實是一樣的,都是id=231的那篇文章,但這篇文章被blog和news兩個欄目所引用,出于各種原因的考慮,我們最終的URL還是如上所示。
    處理的辦法有兩種,一種是利用機器人(robot)協議“排除”其中一個,另一種是通過301將其中一個URL永久重定向另一個URL。

    今天我們先講robot協議。簡單的講,robot指的就是搜索引擎,針對Google,我們又將其稱之為“蜘蛛(spider)”。蜘蛛是很有禮貌的,在抓取你的網頁內容的之前,會首先征求你的意見。而你和robot之前就基于robot協議進行溝通。具體到實現,有兩種方式:


    1. 將一個的robots.txt文本添加到網站根目錄下,如:

    #static content, forbid all the pages under the "Admin" folder
    User-agent: *
    Disallow: /Admin
    #行表示注釋;
    User-agent指搜索引擎,*表示針對所有搜索引擎,也可以指定具體的搜索引擎,如User-agent: googlebot;
    Disallow指定不允許訪問的目錄或頁面,注意:1. 此文本是大小寫敏感的;2.必須以“\”開頭,表示網站根目錄;
    和本系列的宗旨一樣,我們著重談ASP.NET技術。所以更多的robots.txt文本的注意事項,請查看http://www.googlechinawebmaster.com/2008/03/robotstxt.html

    但我們怎么動態的生成這個文件呢(這種需求其實蠻多的)?可能我們馬上想到的就是I/O操作,在根目錄下寫一個txt文件……,但其實還可以有一種方法:使用一般處理程序(.ashx文件),代碼如下:

    代碼
    <%@ WebHandler Language="C#" Class="Handler" %>

    using System;
    using System.Web;

    public class Handler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

    HttpResponse response = context.Response;

    response.Clear();

    //response.ContentType = "text/plain"; 如果要用IE6查看頁面的話,不能這一條聲明,原因不詳

    //下面這兩句在實際使用中應該數據庫等動態生成
    response.Write("User-agent: * \n");
    response.Write("Disallow: /news/231.html \n");

    //引用一個靜態的robots文件內容,里面存儲不會改變的屏蔽內容
    response.WriteFile("~/static-robots.txt");

    response.Flush();
    }

    public bool IsReusable {
    get {
    return false;
    }
    }

    }

     

    一般處理程序實現了IHttpHandler,在前面UrlRewrite部分中,我們講到了HttpModule,其實在ASP.NET的應用程序生命周期中,有一個稱之為“管道(pipeline)”的概念:一個HTTP請求,經過一個有一個的HttpModule的“過濾/處理”,最終到達一個HttpHandle的“處理器”部分,HttpModule和HttpHandle就組成了一個“管道”,非常形象喲,呵呵。貼張圖吧:

     


    如果你對它還比較陌生的話,查看Page的源代碼,你會發現,Page也實現了IHttpHandler,所以*.aspx文件是最常用的HttpHandle。但Page不僅僅是一個HttpHandler,它還嵌入了復雜的頁面生命周期事件,所以從節約資源的角度考慮,很多時候我也可以使用自定義的、更輕量級的*.ashx文件(),來完成一些簡單的工作。和生成一個txt文件類似,我們還可以生成驗證碼(jpg文件),xml文件等。

    然后還要做的一件事就是進行URLRewrite:

    代碼
    void Application_BeginRequest(object sender, EventArgs e)
    {
    // Code that runs on application startup
    HttpContext context = HttpContext.Current;
    string currentLocation = context.Request.Url.LocalPath;

    if (currentLocation.ToLower() == "/website1/robots.txt")
    {
    context.RewritePath("~/Handler.ashx");
    }

    }
     

    這樣,蜘蛛就會以為在網站的根目錄下的確存在一個robots.txt文件。


    2. 在需要屏蔽的頁面META標簽里加上
    <meta id="meta" name="robots" content="noindex,nofollow" />
    noindex 意味著該頁面不能被索引
    nofollow 意味著該頁面不能被“跟隨”(將在SEO Hack中詳細講解)
    這是靜態頁面的效果,如果需要動態生成,也相當簡單:

    代碼
    protected void Page_Load(object sender, EventArgs e)
    {
    HtmlMeta meta = new HtmlMeta();
    meta.Name = "robots";
    meta.Content = "noindex,nofollow";
    this.Header.Controls.Add(meta);
    }
    meta中還可以指定description、keyword等,其技術實現是相同的。

    那么,兩種方式我們如何選擇呢?我的一些建議:
    1. 盡量使用robots.txt,這既能降低網站的負載(雖然很小,呵呵),因為蜘蛛查看了robots.txt文件之后,就不會再請求被屏蔽的相關頁面了;而如果使用meta方式,蜘蛛必須先請求該頁面,再做出不檢索的判斷,這時Http請求已經發出了,服務器端的資源就已經浪費了;另外,如果過多的meta屏蔽,也會使蜘蛛對網站產生不佳的印象,減少或放棄該網站的檢索收錄;
    2. robots.txt文本的匹配時從左到右的,這里就沒什么正則匹配了!所以有的時候,我們不得不使用meta方式了。如我們文章開始的URL:
    http://www.freeflying.com/blog/231.html
    http://www.freeflying.com/news/231.html

    最后,再講一些注意事項:
    1. 不要在所有頁面使用相同的Keyword和Discription,這是我們很容易犯的一個錯誤,雖然articles.aspx是一個頁面,但加上url參數后,就變成了成千上萬個頁面,如果你在頁面上寫死了Keyword和Discription,那將使這成千上萬個頁面都是一樣的Keyword和Discription!
    2. 盡量避免使用基于URL的SessionID。ASP.NET在客戶端禁用cookie的情況下,可以設置使用基于URL的SessionID,效果類似:
    http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>