Показать Меню
falbar Xml карта для сайта на PHP

Делаем xml карту для сайта

Xml карта для сайта на PHP

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

Для начала давайте рассмотрим, какие у нас есть варианты создания xml карты, вот несколько из них:

  1. Использовать различные xml карт генераторы, которые можно найти в интернете;
  2. Написать скрипт, который непосредственно будет работать c xml файлом и изменять его структуру при добавлении контента на сайт;
  3. Третий вариант написать обработчик, который будет эмитировать xml файл.

Возможно, есть и другие варианты, но эти мне пришли сразу на ум. В этой же статье пойдёт речь о третьем способе. Для реализации, которого нам потребуется для начала добавить пару строк в .htaccess, если он есть, или создать.

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

Эти два правила и будут выполнять первую часть способа, а именно эмитировать xml документ. RewriteEngine включает механизм преобразования на сервере, вторая строчка задает правило этого преобразования. Фактически когда приходит запрос на xml файл, идет выполнение php скрипта, который и выдает нам нужные ссылки для карты в xml формате.

Именно такой принцип, по моему мнению, очень удобен. Используя его, мы можем для каждого поискового робота сделать свою xml карту, немного изменив скрипт.

Теперь приступим к написанию самого обработчика:

// Подключаемся к БД
$db = new mysqli("localhost", "root", "", "db");
$db->set_charset("utf8");
if($db->connect_error){
	echo "<div style='color: red;'>ERROR БД</div>";
	exit;
}

// Вытягиваем нужные данные
$result = $db->query('SELECT id FROM articles');
$row = array();
for($i = 0; $i < $result->num_rows; $i++){
	$row[] = $result->fetch_assoc();
}

// Генерируем XML Карту
header("Content-type: text/xml; charset=UTF-8");

echo('<?xml version="1.0" encoding="UTF-8"?>'."\n");
echo('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n");
	echo("\t<url>\n");
	echo("\t\t<loc>http://mysite.ru</loc>\n");
	echo("\t</url>\n");
	// Ссылки
	foreach($row as $r){
		$url = 'http://mysite.ru/article/id/'.$r['id'];
		echo("\t<url>\n");
		echo("\t\t<loc>$url</loc>\n");
		echo("\t</url>\n");
	}
echo('</urlset>'."\n");

Визуально скрипт делиться на три части: подключение к БД, вытягивание данных (в примере - id статей) и генерация xml файла. В этом скрипте я использовал минимум необходимого кода, поэтому, если Вам понравился способ, нужно будет изменить всего пару строк.

В результате мы получим вот такую картину, если обратиться непосредственно к xml файлу.

Вывод xml карты

Вот и всё, карта сайта готова.

Подписаться на обновления

Комментариев еще не оставлено