西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開發(fā)C#.NET → ASP.NET的SEO:使用.ashx文件——排除重復(fù)內(nèi)容

ASP.NET的SEO:使用.ashx文件——排除重復(fù)內(nèi)容

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:自由飛時(shí)間:2010/2/21 23:54:55字體大小:A-A+

作者:不詳點(diǎn)擊:300次評(píng)論:0次標(biāo)簽: SEO

981SEO助手v1.2 綠色版
  • 類型:站長(zhǎng)工具大。4.6M語(yǔ)言:中文 評(píng)分:.0
  • 標(biāo)簽:
立即下載

不同的鏈接指向的頁(yè)面如果具有大量相同的內(nèi)容,這種現(xiàn)象就會(huì)被稱為“重復(fù)內(nèi)容”,如果一個(gè)網(wǎng)站的重復(fù)內(nèi)容很多,搜索引擎就會(huì)認(rèn)為這個(gè)網(wǎng)站的價(jià)值不高。所以我們應(yīng)盡量避免各種重復(fù)內(nèi)容。

動(dòng)態(tài)網(wǎng)站的重復(fù)內(nèi)容常常是由URL參數(shù)引起的,而URL重寫會(huì)惡化這一現(xiàn)象(比較耐人尋味喲,呵呵)。因?yàn)槿绻褂玫氖窃嫉腢RL參數(shù)的話,搜索引擎可能會(huì)進(jìn)行適當(dāng)?shù)呐袛,而得知重?fù)內(nèi)容是由URL參數(shù)引起的,自動(dòng)的進(jìn)行相應(yīng)的處理;而URL重寫會(huì)掩蓋URL參數(shù),反而使得搜索引擎無法識(shí)別URL參數(shù)。比如:

 

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

經(jīng)過URL重寫過后的URL:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html

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

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


1. 將一個(gè)的robots.txt文本添加到網(wǎng)站根目錄下,如:

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

但我們?cè)趺磩?dòng)態(tài)的生成這個(gè)文件呢(這種需求其實(shí)蠻多的)?可能我們馬上想到的就是I/O操作,在根目錄下寫一個(gè)txt文件……,但其實(shí)還可以有一種方法:使用一般處理程序(.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查看頁(yè)面的話,不能這一條聲明,原因不詳

//下面這兩句在實(shí)際使用中應(yīng)該數(shù)據(jù)庫(kù)等動(dòng)態(tài)生成
response.Write("User-agent: * \n");
response.Write("Disallow: /news/231.html \n");

//引用一個(gè)靜態(tài)的robots文件內(nèi)容,里面存儲(chǔ)不會(huì)改變的屏蔽內(nèi)容
response.WriteFile("~/static-robots.txt");

response.Flush();
}

public bool IsReusable {
get {
return false;
}
}

}

 

一般處理程序?qū)崿F(xiàn)了IHttpHandler,在前面UrlRewrite部分中,我們講到了HttpModule,其實(shí)在ASP.NET的應(yīng)用程序生命周期中,有一個(gè)稱之為“管道(pipeline)”的概念:一個(gè)HTTP請(qǐng)求,經(jīng)過一個(gè)有一個(gè)的HttpModule的“過濾/處理”,最終到達(dá)一個(gè)HttpHandle的“處理器”部分,HttpModule和HttpHandle就組成了一個(gè)“管道”,非常形象喲,呵呵。貼張圖吧:

 


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

然后還要做的一件事就是進(jìn)行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");
}

}
 

這樣,蜘蛛就會(huì)以為在網(wǎng)站的根目錄下的確存在一個(gè)robots.txt文件。


2. 在需要屏蔽的頁(yè)面META標(biāo)簽里加上
<meta id="meta" name="robots" content="noindex,nofollow" />
noindex 意味著該頁(yè)面不能被索引
nofollow 意味著該頁(yè)面不能被“跟隨”(將在SEO Hack中詳細(xì)講解)
這是靜態(tài)頁(yè)面的效果,如果需要?jiǎng)討B(tài)生成,也相當(dāng)簡(jiǎn)單:

代碼
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等,其技術(shù)實(shí)現(xiàn)是相同的。

那么,兩種方式我們?nèi)绾芜x擇呢?我的一些建議:
1. 盡量使用robots.txt,這既能降低網(wǎng)站的負(fù)載(雖然很小,呵呵),因?yàn)橹┲氩榭戳藃obots.txt文件之后,就不會(huì)再請(qǐng)求被屏蔽的相關(guān)頁(yè)面了;而如果使用meta方式,蜘蛛必須先請(qǐng)求該頁(yè)面,再做出不檢索的判斷,這時(shí)Http請(qǐng)求已經(jīng)發(fā)出了,服務(wù)器端的資源就已經(jīng)浪費(fèi)了;另外,如果過多的meta屏蔽,也會(huì)使蜘蛛對(duì)網(wǎng)站產(chǎn)生不佳的印象,減少或放棄該網(wǎng)站的檢索收錄;
2. robots.txt文本的匹配時(shí)從左到右的,這里就沒什么正則匹配了!所以有的時(shí)候,我們不得不使用meta方式了。如我們文章開始的URL:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html

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

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

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

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)