Обновляемый Google Sitemap для проекта веб-приложения ASP.NET 3.5 - PullRequest
2 голосов
/ 26 января 2010

Я работаю над проектом веб-приложения ASP.NET 3.5 на C #. Я вручную добавил удобную для Google карту сайта, которая включает записи для каждой страницы в проекте - это не CMS.

  <url>
    <loc>http://www.mysite.com/events.aspx</loc>
    <lastmod>2009-11-17T20:45:46Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>

Клиент обновляет события, используя административную часть. Помимо этого, сайт является относительно статичным. Я пытаюсь выбрать лучший способ обновления значений для нескольких страниц, которые регулярно обновляются.

В частности, я использую QueryStringField элемента управления ListView для улучшения SEO, как описано здесь:

http://www.4guysfromrolla.com/articles/010610-1.aspx

http://gsej.wordpress.com/2009/05/31/using-a-datapager-with-both-a-querystringfield-and-renderdisabledbuttonsaslabels/

Когда свойство QueryStringField установлено, DataPager отображает интерфейс подкачки в виде серии гиперссылок, по которым сканер может следовать и индексировать. Однако, если Google просканировал мой список событий два дня назад, а тем временем администратор добавил еще дюжину событий ... скажем, размер страницы установлен на 6; в этом случае ссылки Google SERP теперь будут указывать на неправильные страницы. Вот почему я должен быть уверен, что карта сайта отражает изменения на странице событий, как только они происходят.

Я уже просмотрел другие ТАК вопросы для информации и не нашел то, что мне нужно. Кто-нибудь может предложить какое-нибудь руководство или альтернативный подход?

UPDATE:

Поскольку это среда общего хостинга, средство просмотра / службы каталогов не будет работать:

Как создать средство просмотра файлов в общей среде веб-хостинга

UPDATE:

Начинаю понимать, что мне может понадобиться сообщить Google, что содержащаяся страница обновлена; обновить последний измененный заголовок HTTP?

Ответы [ 2 ]

1 голос
/ 31 января 2010

Вместо того, чтобы использовать карту сайта с ручным кодированием, создайте обработчик карты сайта, который будет генерировать карту сайта на лету. Вы можете создать метод в обработчике, который будет извлекать страницы из существующей навигационной карты сайта, из базы данных или даже из жестко закодированного списка страниц. Вы можете создать XmlDocument из списка и записать InnerXml документа в поток ответов обработчика.

Затем создайте класс с методом, который будет автоматически пинговать поисковые системы с указанным выше URL-адресом обработчика (например, http://www.google.com/webmasters/tools/ping?sitemap=http://www.mysite.com/sitemap.ashx).

Когда кто-то добавляет новое событие, вызовите вышеуказанный метод. Это будет пинговать Google, используя вашу последнюю карту сайта (только что созданную вышеуказанным методом).

Вы хотите убедиться, что пинг работает, только если карта сайта действительно обновлена. Вы можете использовать File.SetLastWriteTime для events.aspx в обработчике AddNewEvent, чтобы указать, что содержащая страница была обновлена.

Кроме того, будьте осторожны, чтобы убедиться, что за последний час не было ни одного пинга (поскольку правила Google не рекомендуют пинговать чаще, чем один раз в час).

На самом деле я планирую реализовать это в следующем проекте OSS: http://cyclemania.codeplex.com. Я сообщу вам, как только это будет сделано, и вы сможете посмотреть.

1 голос
/ 30 января 2010

Если вы позволяете своему пользователю добавлять события на веб-сайт, вы, вероятно, используете базу данных. Это означает, что вы можете сгенерировать XML-файл Sitemap во время выполнения следующим образом:

  • создайте страницу, где будет доступна ваша карта сайта (это не обязательно должно быть sitemap.xml, но также может быть sitemap.aspx или даже sitemap.ashx).
  • открыть соединение с базой данных
  • перебирает все записи и создает элемент Xml для каждой записи

Это сообщение в блоге должно помочь вам в дальнейшем: Создание поисковой системы SiteMap в C # . Он не использует новые XElements из .Net 3.5, но будет работать нормально.

Вы можете поместить это на страницу aspx, но добавление HttpHandler, вероятно, лучше, как описано в том же блоге, другой пост: ( создание httphandler для карты сайта )

...