Подавать другой файл robots.txt для каждого сайта, размещенного в том же каталоге
У нас есть глобальный проект веб-сайта, для которого мы работаем только с частью LATAM. Здесь есть процесс установки веб-сайта, который позволяет установить один сайт с несколькими ccTLD, чтобы сократить расходы.
Из-за этого robots.txt в www.domain.com/robots.txt
- это тот же файл в www.domain.com.ar/robots.txt
Мы хотели бы реализовать пользовательские файлы robots.txt для каждого региона страны LATAM (AR, CO, CL и т. д.). Одним из решений, о котором мы думаем, является перенаправление, размещенное в www.domain.com.ar/robots.txt
до 301 до www.domain.com.ar/directory/robots.txt
.
Таким образом, у нас могут быть пользовательские файлы robots.txt для каждой страны.
- Это имеет смысл?
- Можно ли перенаправить файл robots.txt в другой файл robots.txt?
- Любые другие предложения?
Заранее благодарим за любой вклад, который у вас может быть.
2 ответа
Я не стал бы рассчитывать на то, что все пауки смогут следовать перенаправлению, чтобы добраться до файла robots.txt
. См .: Отвечает ли Google заголовок перенаправления для файла robots.txt на другое имя файла?
Предполагая, что вы размещены на сервере Apache, вы можете использовать mod_rewrite из вашего файла .htaccess
, чтобы обслуживать правильный файл для правильного домен:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.([a-z\.]+)$
RewriteRule ^robots.txt /%1/robots.txt [L]
В этом случае ваш robots.txt
файл для вашего .cl
будет в /cl/robots.txt
и ваш .com.au
robots.txt
будет находиться в /com.au/robots.txt
Хотя этот должен работать, он имеет несколько потенциальных недостатков:
-
Каждый искатель должен выполнять два HTTP-запроса: один для обнаружения перенаправления, а другой - для получения файла.
-
Некоторые сканеры могут неправильно обрабатывать ответ 301 для
robots.txt
; нет ничего в оригинальномrobots.txt
, который говорит что-либо о перенаправлении, поэтому, по-видимому, их следует трактовать так же, как и для обычных веб-страниц (т. е. следовать), но нет гарантии, что all бесчисленные роботы, которые могут хотите обходить ваш сайт, это будет правильно.( Интернет-проект 1997 года прямо говорит, что « [o] n ответ сервера, указывающий перенаправление (HTTP Status Code 3XX), робот должен следовать перенаправлениям до тех пор, пока не будет найден ресурс ", но поскольку это никогда не превращалось в официальный стандарт, нет никаких реальных требований к тому, чтобы все искатели фактически следовали она.)
Как правило, было бы лучше просто настроить ваш веб-сервер для возврата другого контента для robots.txt
в зависимости от домена, для которого он запрошен. Например, используя Apache mod_rewrite , вы можете внутренне переписать robots.txt
в файл, специфичный для домена, например:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?domain(\.com?)?\.([a-z][a-z])$
RewriteCond robots_%3.txt -f
RewriteRule ^robots\.txt$ robots_%3.txt [NS]
Этот код, помещенный в файл .htaccess
в корневом каталоге общего доступа на сайтах, должен переписывать любые запросы, например. www.domain.com.ar/robots.txt
в файл robots_ar.txt
, при условии, что он существует (это то, что проверяет второй RewriteCond). Если файл не существует или имя хоста не совпадает с регулярным выражением, стандартный файл robots.txt
по умолчанию используется.
(Имя регулярного выражения хоста должно быть достаточно гибким, чтобы также соответствовать URL-адресам без префикса www.
, а также принимать 2LD co.
вместо com.
(как в domain.co.uk
) или даже просто ccTLD после domain
; если это необходимо, вы можете настроить его, чтобы принять еще больше случаев. Обратите внимание, что я не тестировал этот код, поэтому он мог иметь ошибки /опечатки.)
Другая возможность заключалась бы в том, чтобы внутренне переписать запросы для robots.txt
для (например) скрипта PHP, который затем может генерировать содержимое файл динамически на основе имени хоста и всего остального, что вы хотите. С mod_rewrite это можно выполнить просто:
RewriteEngine On
RewriteBase /
RewriteRule ^robots\.txt$ robots.php [NS]
(Написание фактического сценария robots.php
остается в виде упражнения.)