301 редирект на https: всё кроме robots.txt Есть решение
Shop-Script 7. Хостер: TimeWeb. Нужно 301 перенаправление на https всего, кроме robots.txt, который должен быть доступен и по http, и по https.
Добавление в .htaccess следующих параметров:
RewriteEngine On RewriteBase / RewriteCond %{HTTP:X-HTTPS} !1 RewriteCond %{REQUEST_URI} !^/robots.txt$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
приводит к тому, что по адресу http://site.ru/robots.txt вылетает страница https://site.ru/index.php c 404 ошибкой.
Насколько я понял происходит какой-то конфликт с уже имеющимися параметрами в .htaccess. Кто-нибудь в курсе, как эти параметры совместить и добиться желаемого результата?
Эта тема в архиве. Добавление комментариев к ней отключено.
11 ответов
А если как-то так:
(вставлять в начало .htaccess, а не в конец.)
Нет. Такой вариант уже пробовал. Уходит в циклическую переадресацию.
РАБОЧИЙ ВАРИАНТ для ТАЙМВЭБА (для других хостеров параметры .htaccess могут немного отличаться):
1) Содержимое .htaccess:
2) Чтобы работало исключение для robots.txt, нужно скопировать его содержимое из настроек приложения "Сайт" в файл robots.txt в корне сайта (файл robots.txt желательно сохранить в кодировке UTF-8). При этом важно помнить, что изменять файл robots.txt нужно уже не в настройках приложения Сайт, а по ftp.
Содержимое robots.txt должно быть приблизительно таким:
3) В результате имеем ответы сервера:
По URL: http://SiteName.ru/, http://www.SiteName.ru/, https://www.SiteName.ru/
По URL: http://SiteName.ru/robots.txt, http://www.SiteName.ru/robots.txt, https://www.SiteName.ru/robots.txt
Т.е. и Вы и я всё написали правильно по идее, просто загвоздка была в том, что robots.txt должен быть файлом?
В целом да, т.к. robots.txt отдаётся фреймворком из wa-data/public/site/data/SiteName.ru/robots.txt, то естественно срабатывает рерайт на index.php, а затем index.php -> https.
Немного странно.
Все таки там {REQUEST_URI}, а не {REQUEST_FILENAME}. Ну да ладно.
Наверняка, можно сделать чтоб и без вынесения robots.txt в файл работало, если подумать...
Это по рекомендации ТаймВеба. У других хостеров может быть по другому.
Вполне возможно что и можно... но поскольку изменения в robots.txt вносятся редко, то такой "костыль" абсолютно не критичен.
Да, тоже сейчас столкнулся с тем, что пока не вынесешь robots.txt в отдельный файл запрет редиректа http -> https не работает для него.
У меня такая схема работает. Хостинг SpaceWeb
RewriteEngine on
RewriteCond %{HTTP:HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule ^(.*)$ https://мойсайт/$1 [R=301,L]
А Sitemap разве не должен быть в конце robots?
Помогите пожалуйста, у меня следующая проблема:
При обращении через http на любую страницу товаров, например "http://cifrovod.ru/category/wi-fi-adaptery/" перекидывает на Location: "https://cifrovod.ru/index.php" вместо "https://cifrovod.ru/category/wi-fi-adaptery/ из за этого в маркете получаю 404 ошибки на страницы товаров. Пробовал конфиг выше вызывает бесконечную циклическую переадресацию.
Мой .htaccess вот такой, в ЛК https галочки нет.
По варианту, отмеченному как правильный, у меня не вышло.
Рассказываю как получилось.
1. В инсталлере вебасиста (настройках) прописываем что сайт у нас с https
2. Robots.txt используем внутренний, от вебасиста. В корне ничего не лежит.
3. Проверяем.
http://site.ru/robots.txt при обращении перескакивает на https://site.ru/robots.txt и отображается наш введеный robots. Т.е. тут редирект работает сразу.
4. Делаем 301 редирект с помощью htaccess всего остального
У меня сработала такая формула:
5. счастье : ))