В каких случаях может быть нужен sitemap
Ситуация 1: Поисковая система не индексирует некоторые страницы, например из-за того что до них слишком много переходов.
Ситуация 2: Поисковая система находит ключевую фразу сразу на нескольких страницах(например, в статье и её анонсе на главной), какую из этих страниц выдавать ближе к началу? Как задать приоритет?
Именно эти две задачи я думаю решить созданием сайтмапа/
Итак, прога написана, сайтмап построен, код ниже. Написано для CodeIgniter, но думаю принцип везде похож.
Первым делом делаем контроллер. Сразу предупреждаю – нужно немного изменить код под свою специфику.
- Нужно указать свою таблицу, по которой ищется контент
- Нужно указать свой контроллер/функцию да и вообще своё правило формирования URL, а также вытаскивать свою дату(необязательно)
- Да и вообще это всего лишь пример для ленивых – тут практически всё легко меняется напильником
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php class Sitemap extends Controller { function Sitemap(){ parent::Controller(); } function index(){ header("Content-Type: text/xml;charset=utf8"); echo '<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; $query = $this->db->get('XXXXX'); foreach ($query->result() as $row){ echo " <url> <loc>http://XXXXXX.ru/XXX/XXXX/".$row->id."</loc> <lastmod>".$row->date."</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> "; } echo "</urlset>"; } } ?> |
Структуру и смысл выдаваемой страницы можно смотреть
После составления скрипта стоит проверить работоспособность контроллера зайдя на адрес http://ВАШСАЙТ/sitemap. Пример можно посмотреть здесь.
Теперь для полного счастья нужно, сделать переадресацию с sitemap.xml. Это можно сделать в .htaccess.
1 | RewriteRule (.*)\.xml(.*) sitemap [nocase] |
Пока так =)
Посты по теме:
RSS-подписка
А вот смотрите если на сайте 100 000 страниц? Обычный сайт с объявлениями. Когда робот гугла обратится к сайтмепу, он дождется пока ему скрипт весь сайтмеп отдаст? Всегда думал об этой проблеме. Как считаете?
Я как-то попробовал сделать сайтмап на 115 тыс страниц, получился внушительный документ, который генерировался довольно долго, а потом ещё и выяснилось, что поисковики отказываются использовать такие сайтмапы
Вообще, я в тексте дал ссылку на стандарт для sitemap. По стандарту в одном сайтмапе должно быть не больше 50 тыс ссылок. Для большого сайта разумно сделать несколько таких сайтмапов, ссылки на которые указать в главном сайтмапе.
Подробнее тут: http://www.sitemaps.org/ru/protocol.php
Я новичок в этом деле не поможеш плиззз!!!!
$query = $this->db->get(’XXXXX’);- в этой строчки я исправил на свою таблицу!
путь к сайту прописал!
выдаёт ошибку при запуске
Class ‘Controller’ not found??????я знаю что класс не найден!а вот как это исправить????????????????
@ владимир:
В вашем случае просто бывает полезно пару раз прочитать манул. И если хотите создать контроллер Controller, то эта инфа будет полезной – http://www.whitepiano.ru/user_guide/general/reserved_names.html . Сначала читайте, пробуйте разобраться сами, а потом спрашивайте…и не будет глупых вопросов=) не в обиду будет сказанно…
Спасибо, все сделали, все работает…но, в сайтмапе не допустимы кириллические символы. Случайно нет соображений, как реализовать перекодинг русскоязычных урлов в utf8??
urlencode?