@Gavrilla

Правила htaccess с сохранением протокола?

Добрый день.
Использую универсальный htaccess для всех сайтов.
В нем не используется имени сайта.
Есть переход на https
Удаление www (ну или добавление - но суть счас не в этом)
Удаление слеша на конце.

Причем если закомментировать строки про https - то всё работает для http

Обнаружил сегодня в нем ошибку.
При редиректе на без обратного слеша с https переходит на http - что приводит к частично небезопасной загрузке.
Надо добавить в условие сохранение REQUEST_SCHEME - по аналогии с переходом на без www.
Как я понимаю строка
RewriteRule ^(.*)/$ $1 [L,R=301]
должна выглядеть как то так
RewriteRule ^%{REQUEST_SCHEME }(.*)/$ $1 [L,R=301]

Но чего то не получилось это сделать.
Помогите кто чем может.

Allow from All
AddDefaultCharset utf-8
DirectoryIndex index.php
Options -Indexes -MultiViews

RewriteEngine On
RewriteBase /

# https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# no index.php
RewriteRule ^index.php$ / [L,R=301]
RewriteRule ^index.php/$ / [L,R=301]

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

#no end slash
RewriteCond %{REQUEST_URI} ^(.*)/$ [NC]
RewriteCond %{REQUEST_URI} !(admin.*)$
RewriteRule ^(.*)/$ $1 [L,R=301]
#fixme Работает неверно HTTPS://example.ru/captcha/ ->  HTTP://example.ru/captcha  - нужно вставить сохранение протокола

# framework
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Все описывал тут и слеш и соханение протокола.
https://klondike-studio.ru/standards/standartnyy-h...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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