Se as páginas apontadas por links diferentes tiverem muito conteúdo igual, esse fenômeno é chamado de “conteúdo duplicado”. Se um site tiver muito conteúdo repetido, os mecanismos de busca pensarão que o valor do site não é alto. Portanto, devemos tentar evitar todo tipo de conteúdo duplicado.
O conteúdo duplicado em sites dinâmicos geralmente é causado por parâmetros de URL, e a reescrita de URL piorará esse fenômeno (o que é bastante intrigante, haha). Porque se os parâmetros de URL originais forem usados, o mecanismo de pesquisa pode fazer os julgamentos apropriados e descobrir que o conteúdo duplicado é causado por parâmetros de URL e tratá-lo automaticamente de acordo. A reescrita de URL encobrirá os parâmetros de URL, o que fará com que os mecanismos de pesquisa não; não reconhece parâmetros de URL. por exemplo:
URL original:
http://www.freeflying.com/articles.aspx?id=231&catelog=blog
http://www.freeflying.com/articles.aspx?id=231&catelog=news
URL após reescrita de URL:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
O conteúdo das páginas apontadas por esses URLs é na verdade o mesmo, ambos são o artigo com id=231, mas este artigo é referenciado pelas colunas do blog e de notícias. Por vários motivos, nosso URL final ainda é o mostrado acima.
Existem duas maneiras de lidar com isso. Uma é usar o protocolo do robô para "excluir" um deles e a outra é redirecionar permanentemente um dos URLs para outro URL por meio de 301.
Hoje falaremos primeiro sobre o protocolo do robô. Simplificando, robô se refere a um mecanismo de busca. Para o Google, também o chamamos de “aranha”. Os spiders são muito educados e pedirão sua opinião antes de rastrear seu conteúdo da web. Você e o robô já se comunicaram com base no protocolo do robô antes. Específico para implementação, existem duas maneiras:
1. Adicione um texto robots.txt ao diretório raiz do site, como:
#static content, proíbe todas as páginas da pasta "Admin"
Agente do usuário: *
Proibir: /Admin
A linha # indica um comentário;
User-agent refere-se ao mecanismo de pesquisa, * significa para todos os mecanismos de pesquisa, você também pode especificar um mecanismo de pesquisa específico, como User-agent: googlebot;
Disallow especifica diretórios ou páginas que não podem ser acessadas. Nota: 1. Este texto diferencia maiúsculas de minúsculas 2. Deve começar com "", indicando o diretório raiz do site;
Assim como o propósito desta série, focamos na tecnologia ASP.NET. Portanto, para obter mais notas sobre o texto do robots.txt, consulte http://www.googlechinawebmaster.com/2008/03/robotstxt.html
Mas como geramos esse arquivo dinamicamente (na verdade, existem algumas necessidades para isso)? Talvez o que pensamos imediatamente sejam operações de I/O, escrevendo um arquivo txt no diretório raiz..., mas na verdade existe outra maneira: usando um programa de processamento geral (arquivo .ashx), o código é o seguinte:
código
<%@WebHandler Language="C#" Class="Handler" %>
usando o sistema;
usando System.Web;
Manipulador de classe pública: IHttpHandler {
public void ProcessRequest (contexto HttpContext) {
Resposta HttpResponse = context.Response;
resposta.Clear();
//response.ContentType = "text/plain"; Se quiser usar o IE6 para visualizar a página, você não pode fazer esta declaração por motivos desconhecidos.
//As duas sentenças a seguir devem ser geradas dinamicamente pelo banco de dados em uso real.
response.Write("User-agent: * n");
response.Write("Não permitir: /news/231.html n");
//Consulte o conteúdo de um arquivo de robôs estático, que armazena conteúdo protegido que não será alterado.
resposta.WriteFile("~/static-robots.txt");
resposta.Flush();
}
public bool IsReusable {
pegar {
retornar falso;
}
}
}
Geralmente, o manipulador implementa IHttpHandler. Na seção UrlRewrite anterior, falamos sobre HttpModule. Na verdade, no ciclo de vida do aplicativo ASP.NET, existe um conceito chamado "pipeline": uma solicitação HTTP passa por uma "filtragem". /processing" de HttpModule, que eventualmente atinge a parte "processador" de um HttpHandle. HttpModule e HttpHandle formam um "pipeline".
Se você não estiver familiarizado com ele, verifique o código-fonte do Page e descobrirá que o Page também implementa o IHttpHandler, portanto, os arquivos *.aspx são os HttpHandle mais comumente usados. Mas Page não é apenas um HttpHandler, ele também incorpora eventos complexos do ciclo de vida da página, portanto, do ponto de vista de economia de recursos, muitas vezes também posso usar um arquivo *.ashx () personalizado e mais leve para realizar algumas tarefas simples. Semelhante à geração de um arquivo txt, também podemos gerar códigos de verificação (arquivos jpg), arquivos xml, etc.
Então a próxima coisa a fazer é URLRewrite:
código
void Application_BeginRequest(objeto remetente, EventArgs e)
{
//Código que roda na inicialização do aplicativo
Contexto HttpContext = HttpContext.Current;
string currentLocation = context.Request.Url.LocalPath;
if (currentLocation.ToLower() == "/website1/robots.txt")
{
context.RewritePath("~/Handler.ashx");
}
}
Dessa forma, o spider pensará que realmente existe um arquivo robots.txt no diretório raiz do site.
2. Adicione a tag META à página que precisa ser bloqueada.
<meta id="meta" name="robots" content="noindex,nofollow" />
noindex significa que a página não pode ser indexada
nofollow significa que a página não pode ser “seguida” (será explicado em detalhes no SEO Hack)
Este é o efeito de uma página estática. Se precisar gerá-la dinamicamente, é bem simples:
código
protegido void Page_Load (remetente do objeto, EventArgs e)
{
HtmlMeta meta = new HtmlMeta();
meta.Name = "robôs";
meta.Content = "noindex,nofollow";
this.Header.Controls.Add(meta);
}
Descrição, palavra-chave, etc. também podem ser especificados em meta, e a implementação técnica é a mesma.
Então, como escolhemos entre os dois métodos? Algumas das minhas sugestões:
1. Tente usar o robots.txt, que pode diminuir a carga do site (embora seja muito pequeno, haha), pois após o spider visualizar o arquivo robots.txt, ele não solicitará mais páginas relacionadas bloqueadas e se você; use o método meta , o spider deve primeiro solicitar a página e, em seguida, tomar a decisão de não recuperá-la. Nesse momento, a solicitação HTTP foi enviada e os recursos do lado do servidor também foram desperdiçados; meta for bloqueado, também fará com que o spider tenha um impacto negativo na impressão do site, reduza ou abandone a recuperação e inclusão do site;
2. A correspondência do texto do robots.txt é da esquerda para a direita, portanto não há correspondência regular aqui! Então, às vezes, temos que usar o metamétodo. Como o URL no início do nosso artigo:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Finalmente, algumas notas:
1. Não use a mesma palavra-chave e descrição em todas as páginas. Este é um erro que podemos cometer facilmente. Embora articles.aspx seja uma página, depois de adicionar parâmetros de URL, ela se torna milhares de páginas. na página, milhares de páginas terão a mesma palavra-chave e descrição!
2. Tente evitar o uso de SessionID baseado em URL. Quando o ASP.NET desabilita cookies no cliente, você pode configurar um SessionID baseado em URL com efeito semelhante:
http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx