Использование правил в urlrewrite.php в Bitrix может помочь настроить редиректы с .txt на .php файлы для robots.txt и sitemap.txt, особенно когда вы используете Nginx без Apache.
urlrewrite.php
Чтобы настроить Nginx для работы с urlrewrite.php, выполните следующие шаги:
1. Настройка конфигурации Nginx:
server { listen 80; server_name yourdomain.com; root /path/to/your/bitrix/site; index index.php index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { try_files $uri /bitrix/tools/bxapp.php; expires max; log_not_found off; access_log off; } location = /robots.txt { rewrite ^ /urlrewrite.php last; } location = /sitemap.txt { rewrite ^ /urlrewrite.php last; } location = /sitemap.xml { rewrite ^ /urlrewrite.php last; } }
Убедитесь, что ваша конфигурация Nginx настроена для обработки всех запросов через urlrewrite.php. Вот пример конфигурации для Nginx:
В этом примере мы настроили Nginx так, чтобы запросы к robots.txt и sitemap.txt перенаправлялись на urlrewrite.php.
2. Редактирование файла urlrewrite.php
:
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); $requestUri = $_SERVER['REQUEST_URI']; if (strpos($requestUri, '/robots.txt') !== false) { include($_SERVER["DOCUMENT_ROOT"]."/robots.php"); exit; } if (strpos($requestUri, '/sitemap.txt') !== false) { include($_SERVER["DOCUMENT_ROOT"]."/sitemap.php"); exit; } if (strpos($requestUri, '/sitemap.xml') !== false) { include($_SERVER["DOCUMENT_ROOT"]."/sitemap.php"); exit; } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); ?>
Теперь нужно настроить urlrewrite.php для обработки этих запросов. Откройте urlrewrite.php и добавьте соответствующие правила:
В этом скрипте мы проверяем, какой файл был запрошен, и включаем соответствующий PHP-скрипт для генерации контента.
robots.php:
<?php header("Content-Type: text/plain"); echo "User-agent: *\n"; echo "Disallow: /bitrix/\n"; // Добавьте дополнительные правила по необходимости ?>
sitemap.php:
<?php header("Content-Type: text/xml"); echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; echo '<url><loc>http://yourdomain.com/</loc></url>'; // Добавьте дополнительные URL по необходимости echo '</urlset>'; ?>
urlrewrite.php
для обработки.urlrewrite.php
проверяет запросы и включает соответствующие PHP-скрипты.robots.php
и sitemap.php
генерируют и выводят контент для robots.txt
и sitemap.xml
соответственно.
Таким образом, вы можете эмулировать поведение редиректов для robots.txt
и sitemap.txt
на PHP-скрипты, используя Nginx и Bitrix.