@gh0st_d0g

Как поправить htaccess для объединения 2 редиректов в 1?

RewriteCond %{THE_REQUEST} /(.*)index.php.*$
RewriteRule .* /%1 [R=301,L]

RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]

RewriteCond %{QUERY_STRING} ^oid=(.*)
RewriteRule ^(.*)$ /$1? [R=301,L]

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

Имеется 4 редиректа. Необходимо чтобы при запросе на адрес вида localhost/contacts/index.php происходил сразу редирект на адрес https://localhost/contacts/ в 1 редиректе. Сейчас происходит 2 редиректа. И с www.localhost/contacts/index.php сразу на https://localhost/contacts/ . Надо каким то образом видимо все эти 3 правила привести к одному.
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dodo512
RewriteCond %{REQUEST_URI} /[^/.]+$
RewriteRule ^(.*)$ https://localhost/$1/ [R=301,L]

RewriteCond %{THE_REQUEST} /index\.php [OR]
RewriteCond %{HTTPS}       !on         [OR]
RewriteCond %{HTTP_HOST}   ^www\.      [NC]
RewriteRule ^(.*?)(index\.php|$) https://localhost/$1 [R=301,L]
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Уберите флаг [L] из [R=301,L] - это приведёт к последовательному срабатыванию всех применимых правил.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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