Использование правил в 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.