Карта сайта для динамического контента? - PullRequest
9 голосов
/ 23 августа 2009

Я занимаюсь разработкой веб-приложения, используя codeigniter (mvc) и php. Мне было интересно, как мне создать карту сайта для поисковых систем, когда мой контакт является динамическим? Существуют ли передовые практики для этого или есть способ автоматизировать процесс? Я спрашиваю, потому что контент будет постоянно и быстро добавляться, поэтому я хотел бы, чтобы карта сайта была свежей. Спасибо

Обновление: , чтобы помочь ответить на мой вопрос, тип сайта, который я создаю, является общедоступным сайтом блога, где пользователи публикуют статьи.

Обновление2 : Просто, чтобы уточнить мою путаницу: я не могу точно понять, как структурирована карта сайта. Например, на сайте, подобном stackoverflow, по мере того, как пользователи добавляют новые вопросы (и, таким образом, создаются новые страницы), изменяется ли карта сайта, и ее необходимо повторно отправить? Насколько важно, чтобы у сайта, подобного этому, была даже карта сайта?

Ответы [ 6 ]

5 голосов
/ 05 сентября 2009

Даже если ваш контент динамический, вы хотите, чтобы ваш файл сайта был статичным. Конечно, обновляйте карту сайта раз в день, если хотите, ИЛИ обновляйте ее каждый раз, когда вы публикуете новую запись в блоге ... но не пытайтесь создавать ее в то время, когда она запрашивается. Это будет кошмар производительности.

Я думаю, что карта сайта Stackoverflow обновляется ежедневно. Он содержит 50000 последних измененных страниц. Карта сайта помогает с SEO (поисковая оптимизация).

Рецепт для создания карты сайта здесь

2 голосов
/ 24 августа 2009

Предполагается, что вы пытаетесь создать XML-карту сайта, а не HTML-файл?

Я еще не сделал этого и хочу попробовать это в ближайшее время, но я хотел бы сделать следующее: настроить задание cron, которое вызывает путь, например example.com/index.php/sitemap. функция index в вашем контроллере Sitemap затем запустит запрос, чтобы выбрать все заголовки всех ваших сообщений + все, что вам нужно для создания полного URL для этих записей и, поскольку это обязательный элемент в протоколе sitemaps, когда запись последний раз обновлялась , если в вашей базе данных нет поля для этого, возможно, вам придется добавить его.

тогда нужно просто просмотреть результаты и записать xml-файл с правильной структурой. когда вы зацикливаетесь, вам также необходимо определить приоритет, changefreq и все другие элементы для каждой записи.

Я также искал платную версию http://www.xml -sitemaps.com / , которая должна делать все, кроме настройки cron для вас, по довольно приятной цене и работать на вашем собственном сервере. Я не думаю, что вы могли бы разработать это самостоятельно за 19,99 долларов США вашего времени. И это приложение также уведомляет поисковые системы о новом контенте, метод, о котором я пока не рассказал.

2 голосов
/ 23 августа 2009

У меня такая же ситуация, как и у вас, за исключением того, что я разрабатываю в Zend Framework и Doctrine вместо Code Igniter.

То, как мы решили эту проблему, заключалось в создании модели Sitemap, действующей как Doctrine Nested Set. Это всего лишь несколько полей, таких как id, parent_id, title, uri, созданный, обновленный. Вы можете добавить больше полей, если вам нужно, но это основная предпосылка.

Затем мы используем Zend_Navigation, чтобы отобразить это дерево в меню для сайта.

Zend_Navigation также имеет вспомогательный метод для автоматической генерации XML-карты сайта, поэтому у нас есть контроллер и представление, настроенное для визуализации этого XML-документа.

Затем мы написали плагин Zend Action Controller, который контролирует контроллер карты сайта, и когда обновления производятся, он проверяет последнее обновление и проверяет Google, что карта сайта была обновлена.

Все эти концепции могут быть легко перенесены в CI, я думаю.

Если в CI нет помощника вида карты сайта, вы, вероятно, можете использовать классы Zend Navigation, поскольку Zend слабо отделен.

Или вы можете просто сгенерировать XML-документ с помощью CI, используя стандарт для карт сайта здесь.

http://www.sitemaps.org/protocol.php

0 голосов
/ 15 июля 2017

Лучшее решение - добавить в ваш файл apache .htaccess следующую строку после RewriteEngine On

RewriteRule ^sitemap\.xml$ sitemap.php [L]

, а затем просто наличие файла sitemap.php в корневой папке, который обычно доступен через http://yoursite.com/sitemap.xml, URL-адрес по умолчанию, по которому все поисковые системы будут сначала искать.

Файл sitemap.php должен быть примерно таким

<?php header('Content-type: application/xml; charset=utf-8') ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?>
<?include_once('./myVariables.php'); ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc><?php echo $URL1; ?></loc>
    <lastmod>2005-01-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc><?php echo $URL2; ?></loc>
    <lastmod>2005-01-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
</urlset> 

работает:)

0 голосов
/ 24 сентября 2012

Параметр частота обновления в структуре карты сайта сообщает поисковой системе, как часто обновляется веб-страница.

Не путайте с URL-адресом страницы, поскольку его можно изменить многими способами.

Для stackoverflow это может быть questions.php?id=1317539 для этой страницы и, например, частота обновления установлена ​​на одну минуту для questions.php

Таким образом, каждую минуту для веб-сайта stackoverflow создается новая карта сайта.

Обновление: Этот ответ Роберта объясняет, что происходит с картой сайта Stack Overflow, когда в систему добавляется новый вопрос.

0 голосов
/ 23 августа 2009

В зависимости от того, какой тип сайта вы создаете, вы можете сделать это несколькими способами.

Например, если вы делали новостной сайт. Вы можете иметь одну страницу, которая ссылается на постоянную ссылку каждой новостной статьи. Если бы вы могли подробно рассказать, что это за сайт / его содержание, мы могли бы помочь лучше.

...