@unlik

Редирект в htaccess?

В htaccess добавляю такие строки

RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ http://site.ru/? [R=301,L]


Должно идти перенаправление с site.ru/index.php на site.ru
А в итоге в адресной строке появляется index.php

Что делаю не так?
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Если в строке есть index.php
RewriteCond %{REQUEST_URI} /index.php
И если есть гет запросм начинающий с экранированный z притом его экранировать не надо
RewriteCond %{QUERY_STRING} ^\z
То перенаправить все на главную, и удалить гет параметры
RewriteRule ^(.*)$ http://site.ru/? [R=301,L]
Как мы видим это правило далеко от того что вы хотели

Предлагаю вам такой вариант

############################################################################
#### Убираем index.php, если он есть в конце URL ####
############################################################################
RewriteCond %{REQUEST_METHOD} =GET
# Выявляем GET запрос в URL (не POST).
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
# URL cодержит index.php в конце.
RewriteRule ^(.*)$ %1/ [R=301,L]
# Удалить index.php из URL.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы