Создание карты сайта sitemap.xml на php

Создание карты сайта sitemap.xml на php

Создание карты сайта sitemap.xml на php

Sitemap — это файл со ссылками на страницы сайта, который сообщает поисковым системам об актуальной структуре сайта.

Основные поддерживаемые форматы поисковыми системами

Яндекс поддерживает форматы
  • XML
  • TXT
В Google поддерживается несколько форматов файлов Sitemap.
  • XML
  • RSS, mRSS и Atom 1.0
  • Текстовый

Формат протокола Sitemap состоит из XML-тегов. Для всех значений данных в файле Sitemap должно использоваться маскирование . В файле необходимо использовать кодировку UTF-8.

Sitemap должен:

  • В начале поставьте открывающий тег < urlset > , а в конце поставьте закрывающий тег </urlset> .
  • Укажите область имен (стандарт протокола) в теге <urlset> .
  • Включите запись < url > для каждого URL-адреса как родительский тег XML.
  • Включите дочернюю запись < loc > для каждого родительского тега <url> .

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

Также все URL-адреса в файле Sitemap должны быть с одного узла, например www.example.com или store.example.com.

Пример XML-файла Sitemap

Ниже приведен пример файла Sitemap, в котором содержится только один URL-адрес и использованы все необязательные теги. Необязательные теги выделены курсивом.

  
    <?xml version="1.0" encoding="UTF-8"?>
        <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
            <loc>http://www.example.com/</loc>
            <lastmod>2005-01-01</lastmod>
            <changefreq>monthly</changefreq>
            <priority>0.8</priority>
        </url>
    </urlset>
  
Определения XML-тегов
Атрибут Обязательно Описание
<urlset> обязательный

Инкапсулирует этот файл и указывает стандарт текущего протокола.

<url> обязательный

Родительский тег для каждой записи URL-адреса. Остальные теги являются дочерними для этого тега.

<loc> обязательный

URL-адрес страницы. Этот URL-адрес должен начинаться с префикса (например, HTTP) и заканчиваться косой чертой, если Ваш веб-сервер требует этого. Длина этого значения не должна превышать 2048 символов.

<lastmod> необязательно

Дата последнего изменения файла. Эта дата должна быть в формате W3C Datetime . Этот формат позволяет при необходимости опустить сегмент времени и использовать формат ГГГГ-ММ-ДД.

Обратите внимание, что этот тег не имеет отношения к заголовку "If-Modified-Since (304)", который может вернуть сервер, поэтому поисковые системы могут по-разному использовать информацию из этих двух источников.

<changefreq> необязательно

Вероятная частота изменения этой страницы. Это значение предоставляет общую информацию для поисковых систем и может не соответствовать точно частоте сканирования этой страницы. Допустимые значения:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

Значение"всегда" должно использоваться для описания документов, которые изменяются при каждом доступе к этим документам. Значение "никогда" должно использоваться для описания архивных URL-адресов.

Имейте в виду, что значение для этого тега рассматривается как подсказка , а не как команда. Несмотря на то, что сканеры поисковой системы учитывают эту информацию при принятии решений, они могут сканировать страницы с пометкой "ежечасно" менее часто, чем указано, а страницы с пометкой "ежегодно" – более часто, чем указано. Сканеры могут периодически сканировать страницы с пометкой "никогда", чтобы отслеживать неожиданные изменения на этих страницах.

<priority> необязательно

Приоритетность URL относительно других URL на Вашем сайте. Допустимый диапазон значений — от 0,0 до 1,0. Это значение не влияет на процедуру сравнения Ваших страниц со страницами на других сайтах — оно только позволяет указать поисковым системам, какие страницы, по Вашему мнению, более важны для сканеров.

Приоритет страницы по умолчанию — 0,5.

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

Кроме того, следует учитывать, что назначение высокого приоритета всем URL на Вашем сайте не имеет смысла. Поскольку приоритетность – величина относительная, этот параметр используется для того, чтобы определить очередность обработки URL в пределах сайта.

Маскирование символов
Символ Маскирование
Амперсанд & &amp;
Одинарные кавычки ' &apos;
Двойные кавычки " &quot;
Больше > &gt;
Меньше < &lt;

Пример таблицы с постами

Рассмотрит простую таблицу с постами в которой есть параметры дня нашего Sitemap.

База постов

Теперь на основании данной таблицы построим sitemap.xml

Пишем скрипт на php для генерации sitemap.xml

Для генерации sitemap.xml с помощью php убедитесь, что у вас включено расширение xmlwriter

XMLWriter является модулем PHP. Он создаёт xmlWriter API на основе библиотеки libxml.

Модуль представляет собой класс-писатель, который является некэшируемым, однонаправленным средством генерирования потоков или файлов, содержащих данные XML.

Модуль может быть использован в объектно-ориентированном либо в процедурном стилях. Каждый документированный метод описывает альтернативные процедурные вызовы.

    
      <?php

      //Отправляем заголовок с указанием что у нас XML документ
      header('Content-Type: application/xml; charset=utf-8');

      //Константа нашего хоста сайта
      define('HOST', 'https://'. $_SERVER['HTTP_HOST'] .'/');

      //Подключаемся к базе данных
      $dbh = new PDO('mysql:dbname=test;host=localhost', 'root', 'root');

      // Получение статей из базы данных.
      $sql = 'SELECT *, DATE_FORMAT(`createt_at`, "%Y-%m-%d") AS `date` FROM `posts`';
      $sth = $dbh->prepare($sql);
      $sth->execute();
      $posts = $sth->fetchAll(PDO::FETCH_OBJ);

      //Включаем буферизацию вывода
      ob_start();

      /**
      * Создаем объект XMLWriter()
      * Убедитесь что у вас включено соответствующее расширение для PHP
      * */
      $writer = new \XMLWriter();
      $writer->openURI('php://output');
      $writer->startDocument('1.0', 'UTF-8');

      $writer->startElement('urlset');
      $writer->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');

      foreach($posts as $items){
          $writer->startElement('url');

              $writer->writeElement('loc',htmlspecialchars(HOST . $items->alias));
              $writer->writeElement('lastmod', $items->date);
              $writer->writeElement('changefreq', $items->changefreq);
              $writer->writeElement('priority', $items->priority);

          $writer->endElement();
      }

      $writer->endElement();

      $writer->endDocument();

      //Очищаем буфер, отдаем содержимое
      echo ob_get_clean();
      ?>
    
  

Создаем правило .htaccess для перенаправления с sitemap.php на sitemap.xml

Внимание:

Если данный скрипт лежит у вас в корне сайта с именем sitemap.php, вы хотите чтобы он открывался по адресу https://example.com/sitemap.xml. В файле .htaccess нужно добавить запись:

    
      RewriteEngine On
      RewriteRule ^sitemap.xml$ sitemap.php [L,QSA]
    
  

Добавляем директиву Sitemap в robots.txt

Чтобы поисковые системы знали где расположен файл карты сайта нужно добавить директиву Sitemap в robots.txt:

    
      User-agent: *
      Sitemap: https://example.com/sitemap.xml
    
  

Теги
Поддержи проект:

No-name
Numbers

18/05/2023 01:13:03

No-name
Julieta
How would you like to have an Auto-Updating AI based Blog Creator that creates 100,000+ DFY SEO optimized blogs... And be able to instantly profit from them by using ClickBank, promoting affiliate offers, AdSense or... Even selling them on Flippa... => That Is What This New Software Does For You With this new software you can publish 100% original, Search Engine friendly blogs in any niche. And you can profit instantly by using these blogs for Clickbank, affiliate offers, AdSense or even selling them to others. And for a Limited Time you also get a Reseller License+ AI Graphic Creator Whitelabel Included! => Grab Your Copy Now At The Discounted Price + Bonuses Click here ===>>> https://bit.ly/dfyblogsx But Hurry! Only A FEW Slots Left NOW !! Enjoy! Charlie T 90 Rugby ST. TX 44435 ========== Click here to unsubscribe https://bit.ly/stop69

12/05/2023 13:22:21

No-name
Rolland
Hey there, Whatever Business you do, you can't Multiply Your ROI & Profits without Building Proven Funnels. As Funnels, Empower you to Increase Your Lead or Customer Value by giving them options for more products, upgrades & services. What if i tell you you can get all the Hassle Free Funnel Builder with: - 400+ Proven Converting, Mobile Responsive & Ready-to-Go Templates - Fully Drag & Drop & Visual Next Generation Funnel Designer & Planner - Precise Analytics for Your Marketing Campaigns - Inbuilt SEO Management For Funnel And Pages - Advanced FE Integrations with Autoresponders & Webinar Platforms. - Automatic SSL Encryption - 50+ More Cool Features Included So, you don't need to Pay High Monthly Fees to ClickFunnels or any other Funnel or Page Builder to- => Create UNLIMITED or use Proven Converting Funnels in Any Niche in FEW Minutes => Build UNLIMITED Beautiful, Mobile-Friendly & Fast-Loading Landing Pages Easily => Create UNLIMITED Page Templates from Scratch => Create Beautiful & High Converting Lead Pages, Sales, Product, Coming Soon, Bonus, Review Pages & Many Others in Minutes @ One Time Price ( No Monthly Recurring Charge ) PLUS, Complete Step-By-Step Video Training & Tutorials Included to Assist You 24/7... Grab this Exclusive Deal>> https://bit.ly/qfunnelsx Regards Rob Wilson 98 Rocky ST. MI 44345 ===== Click here to unsubscribe https://bit.ly/stop69

11/05/2023 11:33:23

No-name
Freya
Hey there, Whatever Business you do, you can't Multiply Your ROI & Profits without Building Proven Funnels. As Funnels, Empower you to Increase Your Lead or Customer Value by giving them options for more products, upgrades & services. What if i tell you you can get all the Hassle Free Funnel Builder with: - 400+ Proven Converting, Mobile Responsive & Ready-to-Go Templates - Fully Drag & Drop & Visual Next Generation Funnel Designer & Planner - Precise Analytics for Your Marketing Campaigns - Inbuilt SEO Management For Funnel And Pages - Advanced FE Integrations with Autoresponders & Webinar Platforms. - Automatic SSL Encryption - 50+ More Cool Features Included So, you don't need to Pay High Monthly Fees to ClickFunnels or any other Funnel or Page Builder to- => Create UNLIMITED or use Proven Converting Funnels in Any Niche in FEW Minutes => Build UNLIMITED Beautiful, Mobile-Friendly & Fast-Loading Landing Pages Easily => Create UNLIMITED Page Templates from Scratch => Create Beautiful & High Converting Lead Pages, Sales, Product, Coming Soon, Bonus, Review Pages & Many Others in Minutes @ One Time Price ( No Monthly Recurring Charge ) PLUS, Complete Step-By-Step Video Training & Tutorials Included to Assist You 24/7... Grab this Exclusive Deal>> https://bit.ly/qfunnelsx Regards Rob Wilson 98 Rocky ST. MI 44345 ===== Click here to unsubscribe https://bit.ly/stop69

09/05/2023 10:27:30

No-name
Вячеслав
Привет! Классные и понятные статьи. Ко всем статьям по PHP очень хорошо бы вписалась статейка о том как сделать постраничную навигацию. Да, в инете много инфы но у вас лучше получается доносить инфу! Если что, буду рад почитать!))

08/12/2022 16:17:04

Админ
Админ

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

12/12/2022 13:05:07


Copyright © 2014 - 2023 All rights reserved.