loader
Заказать услуги

Динамические карта сайта и robots.txt для сайта на битрикс

В ходе работы с клиентским интернет-магазином были реализованы динамические поддомены, и как следствие, возникла необходимость в динамических sitemap.xml и robots.txt.


Изначально планировалось «подправить» компонент генерации карты сайта так, чтобы он сразу формировал их для каждого поддомена. Однако возникло несколько «Но»:



  • Первое. Управление поддоменами реализовано через инфоблок, а это значит, что каждый раз нужно дергать списки и смотреть, под какой поддомен делать карту;

  • Второе. «Засорение» корня всеми этими картами, что не есть гуд.


Решение вопроса оказалось довольно простым:


Первое: добавляем правило в location nginx


rewrite ^/sitemap.xml /dinamic-map.php last;
rewrite ^/robots.txt /dinamic-robot.php last;

по нему при обращении к sitemap.xml отдаем содержимое dinamic-map.php, а при запросе robots.txt отдаем содержимое dinamic-robot.php


В файлах dinamic-map.php и dinamic-robot.php просто используем встроенную функцию php str_replace.


Содержимое dinamic-map.php


$url = $_SERVER['REQUEST_URI'];
$path = parse_url($url, PHP_URL_PATH);
$pathParts = explode('/', $path);
$lastPart = array_pop($pathParts);
$files = $_SERVER['DOCUMENT_ROOT'].'/'.$lastPart;
$line = file_get_contents($files);
$line = str_replace("sgb.su", $_SERVER["HTTP_HOST"], $line); //sgb.su меняем на свой домен
header('Content-Type: text/xml; charset=utf-8');
echo $line;

Содержимое dinamic-robot.php


$files = $_SERVER['DOCUMENT_ROOT'].'/robots.txt';
$line = file_get_contents($files);
$line = str_replace("sgb.su", $_SERVER["HTTP_HOST"], $line); //sgb.su меняем на свой домен
header('Content-Type: text/html; charset=utf-8');
echo nl2br($line);

Теперь мы имеем динамические не только поддомены, но и файлы карт сайта и robots.txt.
Вуаля!

0 Комментариев
Что-бы оставить свой комментарий Вы должны авторизоваться на сайте
x
Тема пуша
Сообщение пуша
Наверх
Отправить заявку
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных