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

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

В процессе работы над улучшением одного клиентского интернет-магазина мы столкнулись с задачей создания динамических поддоменов, что, как вы, надеюсь, догадались, привело к необходимости в динамических файлах sitemap.xml и robots.txt. Казалось бы, всё довольно просто: немного кода, призыв к доске с маркерами и порция кофе – и вот она, волшебная карта сайта, готовая к отправке в духовные дали поисковых систем. Но тут-то все и начались "Но".

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

И вот, второй момент. Опасность "засорения" корневого каталога кучей файлов. Вы только представьте: у нас в корне вместе с обычными файлами лежит целая свора sitemap.xml и robots.txt на каждый поддомен. Чистота должна быть в нашем коде, как в квартире у бабушки – ни одного лишнего мусора и только еловые угли! 🧹

Но, как это часто бывает, решение оказалось довольно простым, и в некотором роде даже элегантным, будто пьеса Шекспира, где всё сводится к трём словам: "мы нашли выход".

Первым шагом мы добавили правила в конфигурацию nginx (начинаем подмигивать шутникам-системным администраторам):

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

Это означает, что при запросе к файловой карте сайта мы передаем управление на 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); // здесь меняем на свой домен
header('Content-Type: text/xml; charset=utf-8');
echo $line;

Здесь мы мудро получаем текущий URI запроса, парсим его, извлекаем последние части и устанавливаем путь к нужному файлу. После чего, при помощи str_replace, меняем наш старый домен на хитроумный $_SERVER["HTTP_HOST"], и, о чудо, всё начинает работать, как по расписанию!

А теперь, динамический robots.txt – он в file dinamic-robot.php:

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

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

В итоге, мы получили не просто динамические поддомены, но и динамически создаваемые файлы карт сайта и robots.txt! Вуаля! 🎩✨ Как-то так, мы, как настоящие волшебники кода, сделали рутинную задачу увлекательной и живой. Работа, как всегда, горела в хорошем смысле этого слова, а мы можем гордо смотреть в будущее, зная, что наш интернет-магазин теперь на высоте!

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