Если вам необходимо сделать 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]