Делаем Sitemap в CodeIgniter

Древние карты так загадочныВ каких случаях может быть нужен sitemap

Ситуация 1: Поисковая система не индексирует некоторые страницы, например из-за того что до них слишком много переходов.

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

Именно эти две задачи я думаю решить созданием сайтмапа/

Итак, прога написана, сайтмап построен, код ниже. Написано для CodeIgniter, но думаю принцип везде похож.

Первым делом делаем контроллер. Сразу предупреждаю — нужно немного изменить код под свою специфику.

  1. Нужно указать свою таблицу, по которой ищется контент
  2. Нужно указать свой контроллер/функцию да и вообще своё правило формирования URL, а также вытаскивать свою дату(необязательно)
  3. Да и вообще это всего лишь пример для ленивых — тут практически всё легко меняется напильником :)

        ';

        $query = $this->db->get('XXXXX');
        foreach ($query->result() as $row){

            echo  "
                
                http://XXXXXX.ru/XXX/XXXX/".$row->id."
                ".$row->date."
                monthly
                0.8
                
                ";
        }
        echo "";
    }
}
?>

Структуру и смысл выдаваемой страницы можно смотреть здесь

После составления скрипта стоит проверить работоспособность контроллера зайдя на адрес http://ВАШСАЙТ/sitemap. Пример можно посмотреть здесь.

Теперь для полного счастья нужно, сделать переадресацию с sitemap.xml. Это можно сделать в .htaccess.

RewriteRule (.*)\.xml(.*) sitemap [nocase]  

Пока так =)

Делаем Sitemap в CodeIgniter: 6 комментариев

  1. Дмитрий Коробка

    А вот смотрите если на сайте 100 000 страниц? Обычный сайт с объявлениями. Когда робот гугла обратится к сайтмепу, он дождется пока ему скрипт весь сайтмеп отдаст? Всегда думал об этой проблеме. Как считаете?

  2. altesack Автор записи

    Я как-то попробовал сделать сайтмап на 115 тыс страниц, получился внушительный документ, который генерировался довольно долго, а потом ещё и выяснилось, что поисковики отказываются использовать такие сайтмапы

    Вообще, я в тексте дал ссылку на стандарт для sitemap. По стандарту в одном сайтмапе должно быть не больше 50 тыс ссылок. Для большого сайта разумно сделать несколько таких сайтмапов, ссылки на которые указать в главном сайтмапе.

    Подробнее тут: http://www.sitemaps.org/ru/protocol.php

  3. владимир

    Я новичок в этом деле не поможеш плиззз!!!!
    $query = $this->db->get(’XXXXX’);- в этой строчки я исправил на свою таблицу!
    путь к сайту прописал!
    выдаёт ошибку при запуске
    Class ‘Controller’ not found??????я знаю что класс не найден!а вот как это исправить????????????????

  4. Владимир

    @ владимир:
    В вашем случае просто бывает полезно пару раз прочитать манул. И если хотите создать контроллер Controller, то эта инфа будет полезной — http://www.whitepiano.ru/user_guide/general/reserved_names.html . Сначала читайте, пробуйте разобраться сами, а потом спрашивайте…и не будет глупых вопросов=) не в обиду будет сказанно…

  5. Павел

    Спасибо, все сделали, все работает…но, в сайтмапе не допустимы кириллические символы. Случайно нет соображений, как реализовать перекодинг русскоязычных урлов в utf8??

Комментарии запрещены.