Если страницы, на которые указывают разные ссылки, содержат много одинакового контента, это явление называется «дублированием контента». Если на веб-сайте много повторяющегося контента, поисковые системы будут считать, что ценность веб-сайта невысока. Поэтому нам следует стараться избегать всех видов дублированного контента.
Дублирование контента на динамических веб-сайтах часто вызвано параметрами URL-адресов, и перезапись URL-адресов усугубит это явление (что довольно интригующе, ха-ха). Потому что, если используются исходные параметры URL-адреса, поисковая система может принять соответствующие решения и узнать, что дублированный контент вызван параметрами URL-адреса, и автоматически обработать его соответствующим образом. Переписывание URL-адреса скроет параметры URL-адреса, что заставит поисковые системы это сделать; Не распознаю параметры URL. например:
Исходный URL-адрес:
http://www.freeflying.com/articles.aspx?id=231&catelog=блог
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-адреса, на самом деле одинаково, обе представляют собой статью с идентификатором = 231, но на эту статью ссылаются блог и столбцы новостей. По разным причинам наш конечный URL-адрес по-прежнему такой, как показано выше.
Есть два способа справиться с этим: один — использовать протокол робота для «исключения» одного из них, а другой — навсегда перенаправить один из URL-адресов на другой URL-адрес через 301.
Сегодня мы сначала поговорим о протоколе робота. Проще говоря, робот относится к поисковой системе. В Google мы также называем его «пауком». Пауки очень вежливы и сначала спросят ваше мнение, прежде чем сканировать ваш веб-контент. Вы и робот ранее общались на основе протокола робота. В зависимости от реализации существует два способа:
1. Добавьте текст robots.txt в корневой каталог веб-сайта, например:
#статический контент, запретить все страницы в папке «Администратор»
Пользовательский агент: *
Запретить: /Администратор
Строка # указывает на комментарий;
Пользовательский агент относится к поисковой системе, * означает, что для всех поисковых систем также можно указать конкретную поисковую систему, например Пользовательский агент: googlebot;
Disallow указывает каталоги или страницы, доступ к которым запрещен. Примечание. 1. Этот текст чувствителен к регистру. 2. Он должен начинаться с символа «», указывающего корневой каталог веб-сайта;
Как и в этой серии статей, мы фокусируемся на технологии ASP.NET. Дополнительные примечания к тексту robots.txt можно найти по адресу http://www.googlechinawebmaster.com/2008/03/robotstxt.html.
Но как нам динамически генерировать этот файл (на самом деле для этого довольно много потребностей)? Возможно, мы сразу думаем об операциях ввода-вывода, записи txt-файла в корневом каталоге... но на самом деле есть другой способ: с использованием общей программы обработки (файл .ashx), код выглядит следующим образом:
код
<%@ WebHandler Language="C#" Class="Handler" %>
использование системы;
использование System.Web;
Обработчик публичного класса: IHttpHandler {
public void ProcessRequest (контекст HttpContext) {
Ответ HttpResponse = context.Response;
ответ.Очистить();
//response.ContentType = "text/plain"; Если вы хотите использовать IE6 для просмотра страницы, вы не можете сделать этот оператор по неизвестным причинам.
//Следующие два предложения должны динамически генерироваться базой данных при фактическом использовании.
response.Write("Агент пользователя: * n");
response.Write("Запретить: /news/231.html n");
//Обратимся к статическому содержимому файла robots, в котором хранится защищенный контент, который не изменится.
response.WriteFile("~/static-robots.txt");
ответ.Flush();
}
общественный bool IsReusable {
получать {
вернуть ложь;
}
}
}
Обычно обработчик реализует IHttpHandler. В предыдущем разделе UrlRewrite мы говорили о HttpModule. Фактически, в жизненном цикле приложения ASP.NET существует концепция, называемая «конвейером»: HTTP-запрос проходит через «фильтрацию». /processing» HttpModule, который в конечном итоге достигает «процессорной» части HttpHandle. HttpModule и HttpHandle образуют «конвейер».
Если вы с ним не знакомы, проверьте исходный код Page, и вы обнаружите, что Page также реализует IHttpHandler, поэтому файлы *.aspx являются наиболее часто используемыми HttpHandle. Но Page — это не только HttpHandler, он также встраивает сложные события жизненного цикла страницы, поэтому с точки зрения экономии ресурсов я часто могу также использовать собственный, более легкий файл *.ashx() для выполнения некоторых простых задач. Подобно созданию файла txt, мы также можем генерировать коды проверки (файлы jpg), файлы xml и т. д.
Затем следующее, что нужно сделать, это URLRewrite:
код
void Application_BeginRequest (отправитель объекта, EventArgs e)
{
// Код, который запускается при запуске приложения
Контекст HttpContext = HttpContext.Current;
строка currentLocation = context.Request.Url.LocalPath;
if (currentLocation.ToLower() == "/website1/robots.txt")
{
context.RewritePath("~/Handler.ashx");
}
}
Таким образом, паук будет думать, что в корневом каталоге веб-сайта действительно существует файл robots.txt.
2. Добавьте МЕТА-тег на страницу, которую нужно заблокировать.
<meta id="meta" name="robots" content="noindex,nofollow" />
noindex означает, что страница не может быть проиндексирована
nofollow означает, что на страницу нельзя «подписаться» (подробно будет описано в SEO Hack)
Это эффект статической страницы. Если вам нужно сгенерировать ее динамически, это довольно просто:
код
protected void Page_Load (отправитель объекта, EventArgs e)
{
HtmlMeta мета = новый HtmlMeta();
мета.Имя = "роботы";
Meta.Content = "noindex,nofollow";
this.Header.Controls.Add(мета);
}
В мета также можно указать описание, ключевое слово и т. д., техническая реализация такая же.
Итак, как нам сделать выбор между этими двумя методами? Некоторые из моих предложений:
1. Попробуйте использовать robots.txt, который может снизить нагрузку на сайт (хотя она очень маленькая, ха-ха), потому что после того, как паук просмотрит файл robots.txt, он больше не будет запрашивать заблокированные связанные страницы; использовать мета-метод, паук должен сначала запросить страницу, а затем принять решение не получать ее. В это время Http-запрос был отправлен, а ресурсы на стороне сервера были потрачены впустую, если их слишком много; мета заблокирована, это также приведет к тому, что паук окажет негативное влияние на впечатление о веб-сайте, уменьшит или откажется от поиска и включения веб-сайта;
2. Сопоставление текста в robots.txt идет слева направо, поэтому регулярного сопоставления здесь нет! Поэтому иногда нам приходится использовать метаметод. Например, URL-адрес в начале нашей статьи:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Наконец, некоторые примечания:
1. Не используйте одно и то же ключевое слово и описание на всех страницах. Это ошибка, которую мы можем легко допустить. Хотя файл Articles.aspx представляет собой одну страницу, после добавления параметров URL-адреса он становится тысячами страниц. на странице, то тысячи страниц будут иметь одно и то же ключевое слово и описание!
2. Старайтесь избегать использования SessionID на основе URL. Когда ASP.NET отключает файлы cookie на клиенте, вы можете настроить SessionID на основе URL-адреса с аналогичным эффектом:
http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx