htaccess редирект на .html

A
На сайте с 11.03.2011
Offline
60
492

Здравствуйте.

Достался старый сайт в работу, там часть страниц была без .html , часть с .html

Делаем все страницы единообразно, с .html

Настроили редирект с без .html на .html :

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !html$

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1.html [R=301,L]

Однако, если в пути встречается слеш, то реврайт зацикливается, и например с пути

site.ru/1111/2222

перекидывает на :

site.ru/1111/2222.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html

и выдает ошибку

"Неверное перенаправление на странице"

Пытаюсь добавить строки (см ниже) - не помогают:

RewriteCond %{REQUEST_FILENAME} !^(.+).(.+)$

RewriteCond %{REQUEST_FILENAME} !\..{1,10}$

RewriteCond %{REQUEST_FILENAME} !^(.+)html$

Прошу помощи.

Заранее благодарен!

S
На сайте с 30.09.2016
Offline
469
#1

Ну нет такого файла. Попробуйте THE_REQUEST.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
A
На сайте с 11.03.2011
Offline
60
#2

> Ну нет такого файла

файлы и не обрабатываются данным правилом, поскольку прописано

RewriteCond %{REQUEST_FILENAME} !-f

Сменил REQUEST_FILENAME на THE_REQUEST - ничего не изменилось, результат тот же.

Странно, что строку

site.ru/111111 - нормально обрабатывает, меняет ее на

site.ru/111111.html

А если строка со слешем, например

site.ru/1111/2222 - то зацикливается ...

Почему?

A
На сайте с 11.03.2011
Offline
60
#3

заменил строку на

RewriteCond %{REQUEST_URI} !\.html$

- заработало!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий