Дано правило для редиректа со страниц без слэша на страницы со слэшем: Код (Text): RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_URI}!(.*)/$ RewriteCond%{REQUEST_URI}!.html$ RewriteRule^(.*[^/])$ https://%{SERVER_NAME}/$1/[L,R=301] И правило для редиректа на https: Код (Text): RewriteCond%{SERVER_PORT}!^443$ RewriteRule.* https://%{SERVER_NAME}%{REQUEST_URI}[L,R=301] Сейчас при запросе URL http://site.com/info происходит два 301 редиректа: Код (Text): URL запроса:http://site.com/info Кодсостояния:301 URL запроса:https://site.com/info Кодсостояния:301 Как объединить эти два правила, чтобы редирект происходил один раз?
Нужно дублировать правила с незначительными изменениями. См. пример с www в конце этой статьи. Если делать по уму, то лучше распределять обработку таких запросов между разными хостами, т.е. «сайтами». --- Добавлено --- Еще иногда получается использовать множественные условия с [OR]. --- Добавлено --- Я про подобные условия: Код (Text): RewriteCond%{REQUEST_URI}!(.*)/$ Код (Text): RewriteCond%{SERVER_PORT}!^443$
У меня получилось достичь желаемого результата изменив только правило для редиректа на https. Добавил: RewriteCond %{REQUEST_URI} (.*)/$ Код (Text): RewriteCond%{SERVER_PORT}!^443$ RewriteCond %{REQUEST_URI} (.*)/$ RewriteRule.* https://%{SERVER_NAME}%{REQUEST_URI}[L,R=301] Теперь редирект один. Я правильно тебя понял?
Хорошо! Я попробовал с OR: Код (Text): RewriteCond %{SERVER_PORT} !^443$ [OR] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteCond %{REQUEST_URI} !.html$ RewriteRule ^(.*[^/])$ https://%{SERVER_NAME}/$1/ [L,R=301] Но это не работает, так как это на самом деле: if ( (SERVER_PORT != 443 OR REQUEST_FILENAME != -f) and REQUEST_URI != (.*) and REQUEST_URI != .html) Я не нашел инфы по поводу задания приоритета в условии (по типу операторных (круглых) скобок в математике или языках программирования). Помоги, пожалуйста, я всю голову сломал. Мой предыдущий вариант вообще не имеет права на жизнь, хоть и работает? На stackoverflow мне вообще говорят, что задача нерешаема.