Если вам необходимо сделать robots.txt или sitemap.xml для каждого сайта(домена) уникальным, то вы можете воспользоваться следующим скриптом:
<? $arHost = explode( ":", $_SERVER["HTTP_HOST"]); $_SERVER["HTTP_HOST"] = $arHost[0]; $hostname = $_SERVER['HTTP_HOST']; function getRobots($file) { if (!file_exists($file) || !is_readable($file)){ return false; } $timestamp = filemtime($file); $lastModify = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT'; $contentLenght = filesize($file); $etag = md5($file . $timestamp); header('Content-Type: text/plain'); header("Content-Length: $contentLenght"); header("Last-Modified: $lastModify"); header("ETag: \"{$etag}\""); readfile($file); return true; } $robotsHost = dirname(__FILE__) . "/robots/robots_{$hostname}.txt"; $robotsDefault = dirname(__FILE__) . "/robots.txt"; if(!getRobots($robotsHost) && !getRobots($robotsDefault)) { header('HTTP/1.0 404 Not Found'); } ?>
Алгоритм работы скрипта:
- Определяем текущий домен, он будет лежать в переменной $hostname;
- Ищем кастомный файл robots.txt для текущего домена в папке /robots/robots_{$hostname}.txt (Пример: /robots/robots_code-culture.ru.txt);
- Если файл существует и доступен для чтения выводим его содержимое с правильными заголовками;
Чтобы при заходе по /robots.txt открывался кастомный файл, необходимо в файле .htaccess добавить следующий правила:
RewriteCond %{REQUEST_FILENAME} robots.txt RewriteCond %{DOCUMENT_ROOT}/robots.php -f RewriteRule ^(.*)$ /robots.php [L]
Это правило определит, что мы пытаемся зайти на /robots.txt и подключит скрипт /robots.php, который в свою очередь вернет содержимое нашего кастомного файла.
Для кастомных файлов sitemap.xml
Тут делаем все точно так же, как и с robots. Создаем файл sitemap.php с таким же содержимым, только меняем папку, где искать файлы с /robots/ на /sitemaps/ и добавляем правило в .htaccess
RewriteCond %{REQUEST_FILENAME} sitemap.xml RewriteCond %{DOCUMENT_ROOT}/sitemap.php -f RewriteRule ^(.*)$ /sitemap.php [L]