SITEMAP бысто, понятно, легко.

Индексация сайта для поисковиков и роботов. (Perl)

Кто хочет зарабатывать деньги в интернет, тот рано или поздно сталкивается с терминами "продвижение", "индексация", "robots", "sitemap"...
Далее по списку. Надеюсь, те кто читает эту статью, уже загрузились всей этой веселухой.
Давайте разгружать.

Вниманию ВЕБ мастеров предлагается простой и надежный Perl скрипт, позволяющий в считанные секунды генерировать полный набор файлов, необходимых для эффективной индексации сайта роботами поисковых систем.

Все просто. Perl script анализирут файловую структуру сайта, создаёт список файлов и трансформирует этот список в формат XML. В результате работы этого скрипта в корне сайта создаются файлы sietmapindex.xml и sitemap_content.xml
Если сайт построен на PHP, Perl, ASP или другой программной основе, то в дополнение к контенту и индексу можно создать специфический XML файл, отражющий динамический контент. Этот XML файл тоже должен быть включен в индекс.

Текст программы с подробными комментариями

#!/usr/bin/perl
# Первая строка не коментарий, а инструкция ОС, какой обработчик следует использовать для скрипта. 
# Может варьироваться в зависимости от конфигурации сервера.
# Все остальные строки, начинающиеся с символа "#"  - комментарии.
# sitemap.pl author: Wowwi, (c) 2011, использование и модификация свободные, ссылка на исходник обязательна при любой публикации.
# http://www.wowwi.orc.ru/advise/master/sitemap.htm

# Заголовок XML файла sitemap
$sitemap_header=qq~<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
~;
# Конструкция, закрывающая XML файл sitemap
$sitemap_footer=qq~</urlset> 
~;
# Заголовок XML файла sitemapindex
$sitemap_index_header=qq~<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
~;
# Конструкция, закрывающая XML файл sitemapindex
$sitemap_index_footer=qq~</sitemapindex>
~;
# Заголовок указателя индексного файла
$sitemap_index_url_open=qq~<sitemap><loc>~;

# Конструкция, закрывающая указатель индексного файла
$sitemap_index_url_close=qq~</loc></sitemap>
~;
# Заголовок описания URL индексируемого файла
$sitemap_url_open=qq~<url><loc>~;

# Конструкция, закрывающая описание URL индексируемого файла
$sitemap_url_close=qq~</loc></url>
~;
# Объявление списка индексируемых файлов, в начале это пустой список. 
@sitemap_urls=();

# Кореневая директория вашего сайта берётся из переменной окружения.
$site_dir="$ENV{DOCUMENT_ROOT}";

# Если скрипт запускается cron, то лучше жёстко закодировать. Например:
$site_dir="/home/mysite";

# Хост вашего сайта. Если используете https или нестандартный порт, поправьте следующую строчку.
$host="http://$ENV{HTTP_HOST}";

# Если скрипт запускается cron, то лучше жёстко закодировать. Например:
$host="http://www.mysite.org";
где "www.mysite.org" - URI корневой директории вашего сайта.

# Имя основного файла sitemap, в него будет записан индексируемый контент в виде форматированного списка URL файлов.
$sitemap_content_file="sitemap_content.xml";

# Имя файла sitemapindex, в него будет записан список sitemap файлов, если их несколько.
$sitemap_index_file="sietmapindex.xml";

# Расширения имён ФАЙЛОВ, подлежащих индексации, список можно расширить, разделяя расширения вертикальной чертой.
$filetype="html|htm";

# Список имен ДИРЕКТОРИЙ, НЕ подлежащих индексированию, список можно расширить, разделяя имена вертикальной чертой.
$restrict="images|rss|css|php|js|data";

# Определение "пустого" разделителя элементов списков
$"="";

# Открытие файла sitemapindex на запись
open(SMI, ">$site_dir/$sitemap_index_file");

# Запись заголовка в sitemapindex
print SMI ($sitemap_index_header);

# Основной элемент программы - рекурсивная функция, проходящая по дереву сайта и заполняющая список файлов @sitemap_urls
get_sub_dirs($site_dir); 
# См. определение функции ниже.

# Открытие файла sitemap на запись
open(SMC, ">$site_dir/$sitemap_content_file");

# Запись заголовка в sitemap
print SMC ($sitemap_header);

# Запись списка для индексирования в sitemap
print SMC ("@sitemap_urls");

# Запись закрывающей конструкции в sitemap
print SMC ($sitemap_footer);

# Закрытие файла sitemap
close SMC;

# Конструирование URL файла sitemap для включения в sitemapindex
$smc=qq~$sitemap_index_url_open$host/$sitemap_content_file$sitemap_index_url_close~;

# Запись конструкции в sitemapindex
print SMI ($smc);

# Запись закрывающей конструкции в sitemapindex
print SMI ($sitemap_index_footer);

# Закрытие файла sitemapindex 
close SMI;

# Определение прав доступа, чтобы роботы могли обращаться к созданным файлам индексации сайта.
$mode=0755;
chmod $mode, "$site_dir/$sitemap_index_file";
chmod $mode, "$site_dir/$sitemap_content_file";

# Рекурсивная функция, проходящая по дереву сайта (или части сайта).
# Функция читает списки директорий, начиная с переданной в качестве параметра.
# Директории, входящие в определение "$restrict" анализу не подлежат.
# В список попадают только файлы, тип которых задан в определении "$filetype".
sub get_sub_dirs { 
	my $dir = shift; 
	opendir my $dh, $dir or die "Error: $!"; 
	my @files = grep !/^\.\.?$/, readdir $dh; 
	closedir $dh; 
	for my $file (@files) { 
		if($file =~/$filetype/ && $dir !~/$restrict/ && $file !~/yandex/){
			$item="$sitemap_url_open$dir/$file$sitemap_url_close";
			$item =~s/$site_dir/$host/;
			@sitemap_urls=(@sitemap_urls, $item) ;
		} 
		get_sub_dirs("$dir/$file") if -d "$dir/$file"; 
	} 
}
# Конец программы

Вот, собственно и вся программа. Чтобы она заработала, нужно выполнить несколько стандартных пассов руками.

1. Поместить программу в директорию cgi-bin. 2. Присвоить права на выполнение. 3. Желательно назначить задачу на регулярное выполнение программы в crontab.

Еще одно важное замечание.

Чтобы роботы все как один кинулись индексировать ваш сайт, включите в файл robots.txt, в корневой директории сайта следующую инструкцию:
Sitemap: http://www.mysite.org/sietmapindex.xml где "www.mysite.org" - URI корневой директории вашего сайта.

Удачи Вам.
Будут замечания, исправления - пишите.
Ваше ноу-хау может быть опубликовано в "Стране Советов"
Если у Вас есть что сказать - говорите.

Отправьте ссылку на эту программу знакомым Perl программистам
Bookmark this page using Ctrl+D
Wowwi.

Wowwi Home Page

  Программистам:
Защита Гостевой
Защита от спама
Отладка Perl-CGI (1)
Отладка Perl-CGI (2)
Perl. Методы
Долой пароли
JavaScript Tester
Делаем Sitemap
HTML как PHP

  Всем-всем-всем:
Дешёвые лекарства
Школа обольщения
Бесплатное метро
Как защитить дачу
Заявление в ОВИР
RUS_Keyboard
Transliterator
За помощью в ИНТЕРПОЛ
АлкоМЕТР
Секреты NOKIA

Страна Советов


© Wowwi 1999-2017 wowwi@mail.ru