Редирект с http на https c исключением для robots.txt

Обсуждение любых вопросов связанных с файлами конфигурации .htaccess

Редирект с http на https c исключением для robots.txt

Сообщение Gvenv_nk » Чт мар 16, 2017 11:10 am

Товариши, в первых же строках прошу отнестись к моей беде сочувственно и тапками не кидаться, т.к. я, увы, не программист, а махровый гуманитарий-недоучка. Заранее благодарна за советы или полезные ссылки.

Теперь перейду к проблеме.

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

У меня этот редирект в .htaccess (работающий вариант) выглядит так:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^site\.ru$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://site.ru/$1 [L,R]

RewriteCond %{HTTP_HOST} ^www\.site\.ru$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.site.ru/$1 [L,R]

RewriteCond %{HTTP_HOST} ^site\.com$
RewriteCond %{HTTPS} on
RewriteRule (.*) http://site.com/$1 [L,R]

RewriteCond %{HTTP_HOST} ^arenda\.site\.ru$
RewriteCond %{HTTPS} on
RewriteRule (.*) http://arenda.site.ru/$1 [L,R]

(последние правила добавлены для дочерних сайтов, которые должны работать по http, т.к. ssl-сертификат только один)

Вопрос: как грамотно сформулировать этот редирект? И все ли я правильно делаю (что вряд ли)?
Gvenv_nk
 
Сообщений: 2
Зарегистрирован: Чт мар 16, 2017 10:55 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Пт мар 17, 2017 4:00 am

Для исключения достаточно добавить проверку, что %{REQUEST_URI} не равен /robots.txt
Код: выделить все
RewriteCond %{REQUEST_URI} !=/robots.txt


^site\.ru$ и ^www\.site\.ru$ можно объединить в одно условие:
Код: выделить все
RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$


Флаг [R] в таком виде означает редирект с кодом 302.
[R=301] — редирект с кодом 301.
301 — постоянное перенаправление;
302/303/307 — временное перенаправление;
https://yandex.ru/support/webmaster/rob ... irects.xml


В итоге необходимо вот этот фрагмент:
RewriteCond %{HTTP_HOST} ^site\.ru$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://site.ru/$1 [L,R]

RewriteCond %{HTTP_HOST} ^www\.site\.ru$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.site.ru/$1 [L,R]


Заменить на такой:
Код: выделить все
RewriteCond %{REQUEST_URI} !=/robots.txt
RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.site.ru/$1 [L,R=301]
Emilien
Мл. Сержант
 
Сообщений: 44
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Gvenv_nk » Пт мар 17, 2017 7:34 am

Emilien, огромное спасибо, вы мне очень помогли!
Удачи вам!
Gvenv_nk
 
Сообщений: 2
Зарегистрирован: Чт мар 16, 2017 10:55 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0


Вернуться в Htaccess

Кто сейчас на форуме

Зарегистрированные пользователи: YandexBot

cron