Код: Выделить всё
# Disable
DirectorySlash Off
# Recreate the DirectorySlash directive with 308
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ /$1/ [R=308,L]
В инструментах разработчика Chrome я вижу, что он направлен на незащищенный URL-адрес. или по какой-то причине.
Ошибка:
Код: Выделить всё
Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://...'. This request has been blocked; the content must be served over HTTPS.
Код: Выделить всё
RewriteRule ^(.+[^/])$ %{REQUEST_SCHEME}://%{HTTP_HOST}/$1/ [R=308,L]
ОБНОВЛЕНИЕ:
Я попробовал проверить протокол и сохранить его в переменной, поскольку REQUEST_SCHEME не всегда определен, и по умолчанию он снова возвращается к http.
Код: Выделить всё
RewriteCond %{HTTPS} on
RewriteRule .* - [E=PROTO:https]
RewriteCond %{HTTPS} !on
RewriteRule .* - [E=PROTO:http]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ %{ENV:PROTO}://%{HTTP_HOST}/$1/ [R=308,L]
ОБНОВЛЕНИЕ: Как предложил Аркаша, я попробовал жесткое кодирование HTTPS и это работает.
Код: Выделить всё
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ https://%{HTTP_HOST}/$1/ [R=308,L]
Поэтому, я думаю, мне придется использовать проверку на основе домена или какой-либо другой обходной путь. и продублируйте логику для HTTP и HTTPS.
Я чувствую, что это все ненужная гимнастика, чтобы заставить перенаправление 308 работать так, как описано в документации.
Может кто-нибудь объяснит это странное поведение?
Подробнее здесь: https://stackoverflow.com/questions/787 ... ps-to-http
Мобильная версия