Добрый день.
Использую универсальный 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]