Частичный редирект для robots.txt для Nginx
В последнее время стало популярным переводить сайты на защищенный протокол https. Это повышает безопасность работы с сайтом, это якобы повышает лояльность поисковиков к сайту и вообще классно и модно.
Статей по переводу WordPress на HTTPS в сети огромное множество, поэтому не буду на этом останавливаться.
Намного интереснее задачи и проблемы которые могут возникнуть при переводе сайта на работу с SSL сертификатом.
Одна из них, это то, что Яндекс во время переезда хочет чтобы файл robots.txt был доступен ему и по протоколу http и по протоколу https.
В инструкциях для Apache пишут что можно сделать вот так:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule ^(.*)$ https://SiteName.ru/$1 [R=301,L]
А вот кусочек конфига который работает на Nginx. Возможно не самое изящное решение, но оно работает:
set $do_redirect  1;
if ($scheme ~* ^https$) {
    set $do_redirect 0;
}
if ($request_uri ~* ^/robots\.txt$) {
    set $do_redirect 0;
}
if ($do_redirect = 1) {
   return 301 https://$server_name$request_uri;
}
Некоторые вообще считают что это не критичная проблема и Яндекс сам разберется где ему искать новый robots.txt, но если клиент хочет, значит нужно сделать :-)
А как бы вы решили данную задачу?
Запись впервые появилась Блог про блоги от Дмитрия Донченко .
Нет похожих записей.
Опубліковано: 21/03/17 @ 07:49
Розділ  Блоги Реклама  
Рекомендуємо:
DOU Проектор: Navizor — розумний мобільний навігатор та система моніторингу якості доріг
 Інфо-сайти: підсумки березня 2017 — вдалося розігнатися
 Ответы на вопросы
 Кейс: Продвижение с нуля интернет-магазина шин и дисков в Казахстане
 Реактивные библиотеки RX