Page 1 of 1

Сервер отвечает редиректом на запрос /robots.txt

Posted: Tue Oct 17, 2017 8:09 am
by Tevah
Панель Vesta на CentOS, сайт на wordpress. Перевел сайт на https. В яндекс вебмастере ошибка:
Сервер отвечает редиректом на запрос /robots.txt
Надо запретить переадресацию robots.txt. Перерыл интернет, есть много решений, ни одно не подходит. Кто подскажет, сделает большое дело, потому что ошибка очень частая. Для Vesta решений не нашел, хотя убил вчерашний день и сегодняшнее утро, перерыл и русскоязычную и англоязычную сеть. Везде одни и те же рекомендации, которые не помогают. Видать что-то я упускаю из виду.

Мой конфиг nginx по адресу:
home - admin - conf - web

Code: Select all

server {
    listen      ip:80;
    server_name site.ru www.site.ru;
    error_log  /var/log/httpd/domains/site.ru.error.log error;

    location / {

        # В данных передающихся апачу дописываем вызов директивы limit_req
        limit_req zone=dyn burst=10;

        proxy_pass      http://ip:8080;
    }

    # Вынес статистику отдельно из обработки апача
    location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
        root           /home/admin/web/site.ru/public_html;
        access_log     /var/log/httpd/domains/site.ru.log combined;
        access_log     /var/log/httpd/domains/site.ru.bytes bytes;
        expires        max;
        try_files      $uri @fallback;
    }

    location /error/ {
        alias   /home/admin/web/site.ru/document_errors/;
    }

    location @fallback {
        proxy_pass      http://ip:8080;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include /home/admin/conf/web/nginx.site.ru.conf*;

    # managed by Certbot
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # Redirect non-https traffic to https
     if ($scheme != "https") {
         return 301 https://$host$request_uri;
     } # managed by Certbot

}
Что пробовал:

1.
Ставить в .htaccess:

Code: Select all

<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
Результата нет. FilesMatch не работает.

2.
Перенаправлять зашифрованный трафик через:

Code: Select all

server {
    listen 80;
    server_name site.ru;
    return 301 https://site.ru$request_uri;
}
вместо схемы:

Code: Select all

      if ($scheme != "https") {
         return 301 https://$host$request_uri;
     }
чтобы как-то задействовать команды прерывания редиректа:

Code: Select all

location /robots.txt {
root /home/admin/web/site.ru/public_html;
}
или

Code: Select all

location /home/admin/web/site.ru/public_html/ {
rewrite ^ /robots.txt break;
}
^^^ Потому что эти команды не работают.

Но и сама эта команда:

Code: Select all

    return 301 https://site.ru$request_uri;
вызывает бесконечную переадресацию и сайт не работает.

3.
Пробовал в nginx ставить такую команду:

Code: Select all

if ($request_uri !~* /robots.txt) {
return 301 https://$host$request_uri;
}
Тоже бесполезно. Ничего не происходит.

4.
Если переадресацию с http на https ставить не в nginx, а в htaccess, например так:

Code: Select all

RewriteEngine On
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{REQUEST_FILENAME} !^robots\.txt
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
то опять же происходит бесконечная переадресация и сайт не загружается.

5. Во всех конфигах апача открыл:

Code: Select all

<Directory />
    AllowOverride none
</Directory>
Но всё равно никакие подобные конфиги в htaccess не работают:

Code: Select all

RewriteCond %{REQUEST_URI} !^/robots.txt$ [NC]

Code: Select all

RewriteEngine On
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{REQUEST_FILENAME} !^robots\.txt
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Перепробовал кажется всё. Подскажите люди добрые. Первый конфиг рабочий, весь трафик льется на https без ошибок, но нужно чтобы лилось всё, кроме robots.txt, потому что яндекс его не видит.