@aljo222
В процессе обучения веб-разработке

Как сделать один редирект на https без www без дублей слэшей и index.php в конце?

Здравствуйте!
Я плохо знаком с htaccess, но на работе аутсорс команда сеошников дала задачу добавить редиректы:
1) с www на без www
2) с http на https
3) убрать дубли слэшей в url

Я прописал правила, но теперь образуются цепочки редиректов. Подскажите пожалуйста как от них избавиться?
Вот что я указал:
# www на без www
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# http на https
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Исключаем все лишние слеши.
RewriteCond %{THE_REQUEST} // 
RewriteRule .* /$0 [R=301,L] 

# index.php в конце
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
@dodo512
# index.php в конце
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^  https://site.ru/ [R=301,L]

# Исключаем все лишние слеши.
RewriteCond %{THE_REQUEST} //
RewriteRule .* https://site.ru/$0 [R=301,L]

# www на без www
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule .* https://site.ru/$0 [R=301,L]

# http на https
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} !^443
RewriteRule .* https://site.ru/$0 [R=301,L]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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