Основные возможности:
- Автоматическая подстановка даты последней модификации файла;
- Подстановка периодичности обновления и приоритета для каждого файла согласно таблицы или по умолчанию.
Описание:
Cкрипт sitemap.sh разработан для автоматизации процесса генерации карты сайта в xml формате.
- Данный скрипт помогает создавать и обновлять карту сайта.
- Запуск скрипта осуществляется в ручном режиме.
- Может быть расположен как на сайте ( требуется ssh доступ), так и на локальном зеркале сайта ( с последующим копированием сгенерированной карты на сайт).
Пример cкрипта sitemap.sh для автоматизации генерации карты сайта в xml формате
(Скачать файл можно будет sitemap-1.1.tgz. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как…)
Условия:
- Скрипт и файлы 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 "" >> $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"?-->
sitemap_s.xml
URL DATA FREQ PRIO
Результат выполнения скрипта:
Текст:
sitemap.xml
<!--?xml version="1.0" encoding="utf-8"?-->
http://my.host.ru/index.html
2008-06-18
weekly
0.8
http://my.host.ru/docs/prod1/item1/index.html
2008-06-18
weekly
0.4
http://my.host.ru/docs/prod1/item2/index.html
2008-06-20
weekly
0.4
http://my.host.ru/docs/prod2/item1/index.html
2008-06-20
weekly
0.4
http://my.host.ru/docs/prod2/item2/index.html
2008-06-20
weekly
0.4
http://my.host.ru/docs/prod1/index.html
2008-06-20
weekly
0.6
http://my.host.ru/docs/prod2/index.html
2008-06-20
weekly
0.6