Как обслуживать разные robots.txt для http и https на одном сайте?

У меня есть небольшой сайт, который обслуживает Apache (я не могу поставить Nginx вперед, ни заменить Apache на что-либо), и он настроен на обслуживание одного и того же сайта как по http, так и по https (перенаправлений http->https нет, поэтому пока что, поэтому обе версии http и https обслуживаются параллельно).

Что мне нужно, это настроить .htaccess так один и тот же URI через http и через https обслуживать другой текстовый файл?

подобно http://example.com/proto.txt говорит, что "сайт по http" в то время как https://example.com/proto.txt сказал бы "Сайт обслуживается через https".

2 ответа

Используйте псевдоним

Создайте два файла, robots.txt и robots_http.txt, и добавьте их в свой http VirtualHost:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"

Если вы не можете или не хотите менять "основную" конфигурацию Apache, но должны сделать это в .htaccess файл, вы можете использовать RewriteRule с RewriteCond который проверяет HTTPS.

Что-то вроде:

RewriteEngine On

RewriteCond %{HTTPS} "on"
RewriteRule robots.txt robots_https.txt [L]

должно работать (я не проверял).

Обратите внимание, что это основано на том, что Apache сам выполняет HTTPS-завершение. Если HTTPS-завершение выполняется на обратном прокси-сервере перед этим, то условие, скорее всего, будет другим (и будет зависеть от конфигурации обратного прокси-сервера и Apache).

Другие вопросы по тегам