Основные возможности:
-
Автоматическая подстановка даты последней модификации файла;
-
Подстановка периодичности обновления и приоритета для каждого файла согласно таблицы или по умолчанию.
Пример cкрипта для автоматизации генерации карты сайта в xml формате
Cкрипт
sitemap.sh
разработан для автоматизации процесса генерации карты сайта в xml формате.
Описание:
-
Данный скрипт помогает создавать и обновлять карту сайта.
-
Запуск скрипта осуществляется в ручном режиме.
-
Может быть расположен как на сайте ( требуется ssh доступ), так и на локальном зеркале сайта ( с последующим копированием сгенерированной карты на сайт).
Пример sitemap.sh файла:
(Скачать файл можно будет
здесь. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)
Условия:
-
Скрипт и файлы sitemap_s.xml, sitemap_b.xml, files.txt
расположены либо в корневом каталоге локального зеркала сайта на Linux хосте, или у хостера с наличием ssh доступа.
При размещении скрипта на сайте у хостера, необходимо позаботиться о расположении скрипта (например расположить в домашний каталог, Но не в корень сайта.)
и раскоментировать в скрипте переход в корневой каталог сайта перед получением списка файлов #cd ~myhome/mywwwroot
и заменить относительный пути к файлам sitemap_s.xml, sitemap_b.xml, files.txt на полные (~myhome/sitemap_s.xml и т.д.)
-
Предположим, что сайт состоит из нескольких html файлов в корневом каталоге (задан строковым параметром Base) ,
несколько файлов html в каталоге первого (задан строковым параметром BaseS) и второго уровня и т.д (задан строковым параметром BS).
Максимальный уровень сканируемого каталога задан числовым параметром HeightBS.
-
Если имеются html файлы, которые необходимо скрыть от скрипта,
положим, что их имена начинаются со знака "_" (подчеркивание), в скрипте учтено как [!_] при получении списка файлов.
-
Приоритеты и периодичность изменения конкретных файлов записана в таблицу files.txt (Имя файла таблицы задано строковым параметром Fname).
Файлы отсутствующие в таблице примут параметры по умолчанию: Frequ и Prior.
Текст:
#!/bin/sh
Base='http:\/\/my.host.ru\/'
BaseS='docs/'
BS='*/'
HeightBS=2
i=1
#cd ~myhome/mywwwroot
Files=`ls [!_]*.html`
Files=$Files' '`ls $BaseS[!_]*.html`
while [ $i -le $HeightBS ]
do
BaseS=$BaseS$BS
Files=$Files' '`ls $BaseS[!_]*.html`
i=`expr $i + 1`
done
Fname='files.txt'
#Fname='~myhome/files.txt'
Fsitemap_s='sitemap_s.xml'
#Fsitemap_s='~myhome/sitemap_s.xml'
Fsitemap_ss='sitemap.xml'
Frequ='monthly'
Prior='0.2'
function sitemap() {
#Параметры:
#$1 - Files
#$2 - Fname
#$3 - Fsitemap_s
#$4 - Fsitemap_ss
#$5 - Frequ
#$6 - Prior
Freqn=`grep ^$1 $2 | awk {'print $2'}`
if [ "$Freqn" = "" ]; then
Freqn=$5
fi
Freq='s/FREQ/'$Freqn'/'
Prion=`grep ^$1 $2 | awk {'print $3'}`
if [ "$Prion" = "" ]; then
Prion=$6
fi
Prio='s/PRIO/'$Prion'/'
sedURL=`echo $1 | sed 's/\//\\\ /g' | sed 's/ /\//g'`
Urlf='s/URL/'$Base$sedURL'/'
LDate='s/DATA/'`ls -l $1 --time-style='+%Y-%m-%d' | awk {'print $6'}`'/'
sed -e $Urlf -e $LDate -e $Freq -e $Prio $3 >> $4
}
cat sitemap_b.xml > $Fsitemap_ss
#cat ~myhome/sitemap_b.xml > $Fsitemap_ss
for Url in $Files
do
sitemap $Url $Fname $Fsitemap_s $Fsitemap_ss $Frequ $Prior
done
echo "</urlset>" >> $Fsitemap_ss
exit
Пример файла files.txt:
Позволяет указать конкретные параметры приоритета и периодичности изменения.
Синтаксис: ИмяФайла Периодичность Приоритет
Текст:
index.html weekly 0.8
docs/prod1/item1/index.html weekly 0.4
docs/prod1/item2/index.html weekly 0.4
docs/prod2/item1/index.html weekly 0.4
docs/prod2/item2/index.html weekly 0.4
docs/prod1/index.html weekly 0.6
docs/prod2/index.html weekly 0.6
Пример файлов sitemap_s.xml и sitemap_b.xml:
Текст:
sitemap_b.xml
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
sitemap_s.xml
<url>
<loc>URL</loc>
<lastmod>DATA</lastmod>
<changefreq>FREQ</changefreq>
<priority>PRIO</priority>
</url>
Результат выполнения скрипта:
Текст:
sitemap.xml
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://my.host.ru/index.html</loc>
<lastmod>2008-06-18</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://my.host.ru/docs/prod1/item1/index.html</loc>
<lastmod>2008-06-18</lastmod>
<changefreq>weekly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://my.host.ru/docs/prod1/item2/index.html</loc>
<lastmod>2008-06-20</lastmod>
<changefreq>weekly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://my.host.ru/docs/prod2/item1/index.html</loc>
<lastmod>2008-06-20</lastmod>
<changefreq>weekly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://my.host.ru/docs/prod2/item2/index.html</loc>
<lastmod>2008-06-20</lastmod>
<changefreq>weekly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://my.host.ru/docs/prod1/index.html</loc>
<lastmod>2008-06-20</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://my.host.ru/docs/prod2/index.html</loc>
<lastmod>2008-06-20</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
</urlset>