@MarkelovNNN

Почему .htaccess переадресовывает не все страницы на https?

Привет, прошу подсказки!

Вчера настраивал переадресацию в .htaccess с http на https. Необходимо, чтобы все страницы с протоколом http вели на такие же страницы с протоколом https.

В .htaccess указал так:

RewriteEngine on
	Options +FollowSymLinks
	
	# Редирект на HTTPS
	RewriteCond %{HTTPS} off
	RewriteCond %{HTTP:X-Forwarded-Proto} !https
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
	
	# Переадресация страниц со слешем на страницы без слеша
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^(.+)/$ /$1 [R=301,L]
	
	# Set "protossl" to "s" if we were accessed via https://.  This is used later
	# if you enable "www." stripping or enforcement, in order to ensure that
	# you don't bounce between http and https.
	RewriteRule ^ - [E=protossl]
	RewriteCond %{HTTPS} on
	RewriteRule ^ - [E=protossl:s]
	
	# Редирект с www на без www
	RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
	RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]


Все страницы нормально переадресовывает, кроме страницы:

http://site.ru/robots.txt

которая доступна в 2-х вариантах, как с http-протоколом, так и с https.

Подскажите, почему так?
  • Вопрос задан
  • 824 просмотра
Пригласить эксперта
Ответы на вопрос 2
xakplant
@xakplant
Автор сайта xakplant.ru
Эти строки противоречат друг-другу, как минимум

RewriteCond %{HTTPS} off
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

  # Редирект с www на без www
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]


Лучше замените их вот этим
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

Это более стабильный способ перенаправления

Для тестов с htaccess вы можете использовать сервис https://htaccess.madewithlove.be/
Ответ написан
shambler81
@shambler81 Куратор тега htaccess
https://klondike-studio.ru/standards/standartnyy-h...
тут можешь посмотреть.

Что же касается robots.txt - это файл текстов и скорее всего его обрабатывает nginx отдельно от apache
Как следствие .htaccess просто к нему не относится
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы