Делаем Sitemap в CodeIgniter

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

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

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

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

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

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

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

Пока так =)

Посты по теме:

  1. CMS-визитка на CodeIgniter
  2. AJAX на CodeIgniter
  3. Скелет для приложения в CodeIgniter
  4. ALCAPTCHA = Капча + AJAX + CodeIgniter
  5. Проблемы сессии в CodeIgniter

Категории CodeIgniter |
автор: altesack / Воскресенье, Сентябрь 06, 2009 / Нет комментов »

Ответить