@gremlin71

Почему происходит двойной редирект .htaccess?

Не могу понять почему происходит двойной редирект

63f3c6c0d8058440262565.jpeg

Вот содержимое .htaccess

Options -Indexes 
ErrorDocument 404 /404.php

<IfModule mod_rewrite.c>
	Options +FollowSymLinks

	RewriteEngine On

	RewriteCond %{ENV:HTTPS} !on
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
	
	RewriteCond %{HTTP_HOST} ^www.domen.ru$ [NC]
	RewriteRule ^(.*)$ https://domen.ru/$1 [R=301,L]

	RewriteCond %{THE_REQUEST} ^(.*)/index\.(php|html|htm)\ HTTP/
	RewriteRule ^(.*)index\.(php|html|htm)$ https://domen.ru/$1 [R=301,L]
	
	RewriteCond %{REQUEST_FILENAME} robots.txt
	RewriteCond %{DOCUMENT_ROOT}/robots.php -f
	RewriteRule ^(.*)$ /robots.php [L]

	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-l
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
	RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
	RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>


Нужно перенаправление на без www
На https
Добавлять слеш в конце

Отдавать 404 в случае если физически страницы нет:
https://domen.ru/section
https://domen.ru/section/

Сайт на bitrix

Пробовал дописывать

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ https://%{HTTP_HOST}/$1/ [L,R=301]


Но тогда в случае

https://domen.ru/section

Сначала редирект потом 404, а нужно сразу 404
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
@dodo512
Этот редирект выполняет mod_dir. По умолчанию включен DirectorySlash.
Для запросов к существующим папкам автоматически добавляется слеш.
А http:// вместо https:// из-за настроек связки Nginx + Apache.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ https://%{HTTP_HOST}/$1/ [L,R=301]

Тут вместо проверки что это не файл !-f нужна проверка что это существующая папка -d.
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ https://site.ru/$1/ [R=301,L]

Ставить сразу после RewriteEngine On.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы