xilgiz: "RedirectMatch 301 (.*)\.html$ http://evakuator116.ru$1"
Работает, на всех страницах, кроме главной, она получается http://evakuator116.ru/index
Как можно решить проблему, не подскажете?
Правила обрабатываются в том порядке, в котором объявлены в файле. Достаточно выше добавить отдельное правило для /index.html
если ссылка которую нужно заменить, находится между двумя тегами <a>, то она не будет заменена, например во фрагменте текста:
Фрагмент текста http://site3.ru не будет заменен на ссылку.
Это последствия применения <\/a>.* которая захватит максимально любых символов до конца строки.
Можно поправить выкинув из шаблона все лишнее оставив только (\s)(http:\/\/[\w\.\-\_%]*)
Но не сработает если ссылка в начале текста или обернута в другой тег <span>http://site3.ru</span>.
Решить можно так:
"RedirectMatch 301 (.*)\.html$ http://evakuator116.ru$1"
Работает, на всех страницах, кроме главной, она получается http://evakuator116.ru/index
Как можно решить проблему, не подскажете?
Правила обрабатываются в том порядке, в котором объявлены в файле. Достаточно выше добавить отдельное правило для /index.html
c http://site.ru/category/staeika-nowaya-moya
на http://site.ru/category/staeika-nowaya-moya.html
Это можно сделать так
Или так
Чуть поправить одно правило и расставить в правильном порядке
В %{THE_REQUEST} будет строка вида "GET /articles/index.php?go=article&id=123 HTTP/1.1"
Часто ошибочно ставят правила для редиректа в самый конец после конструкций вроде RewriteRule .* index.php [L]
После этого редирект не работает.
Если хочется изврата, то как-то так:
Ну тогда применить аналогичный шаблон с RewriteRule
Ставить в самое начало файла.
А ставите правила в .htaccess который в корне сайта или может в папке /dir/?
Шаблон ^/dir/index.php(?:/(.*))?$ совпадает с адресами
/dir/index.php
/dir/index.php/pathtopage.html
Шаблон ^/dir/index.php/(.*)$ совпадет только с адресами вида /dir/index.php/pathtopage.html
Правила составлены верно. Проблема может быть если поставили их не в самое начало, а после других правил. Например после RewriteRule . index.php [L]