Основные возможности:

  • Автоматическая подстановка даты последней модификации файла;
  • Подстановка периодичности обновления и приоритета для каждого файла согласно таблицы или по умолчанию.

Описание:

Cкрипт sitemap.sh разработан для автоматизации процесса генерации карты сайта в xml формате.

  • Данный скрипт помогает создавать и обновлять карту сайта.
  • Запуск скрипта осуществляется в ручном режиме.
  • Может быть расположен как на сайте ( требуется ssh доступ), так и на локальном зеркале сайта ( с последующим копированием сгенерированной карты на сайт).

Пример cкрипта sitemap.sh для автоматизации генерации карты сайта в xml формате

(Скачать файл можно будет здесь. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)

Условия:

  •     Скрипт и файлы 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>