Правила обрабатываются в том порядке, в котором объявлены в файле. Достаточно выше добавить отдельное правило для /index.html
RedirectMatch 301 ^/index\.html$ http://evakuator116.ru/ RedirectMatch 301 (.*)\.html$ http://evakuator116.ru$1
Это можно сделать так
RedirectMatch 301 ^/.+(?<!\.html)$ http://www.site.com$0.html
Или так
RedirectMatch 301 ^/[^.]+$ http://www.site.com$0.html
Чуть поправить одно правило и расставить в правильном порядке
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
В %{THE_REQUEST} будет строка вида "GET /articles/index.php?go=article&id=123 HTTP/1.1"
RewriteCond %{THE_REQUEST} \?go=article&id=([^\ &]+)RewriteRule ^ /articles/article-%1.html? [R=301,L]RewriteCond %{THE_REQUEST} \ (/prog/[^?]+\?)RewriteRule ^ %1 [R=301,L]
Часто ошибочно ставят правила для редиректа в самый конец после конструкций вроде RewriteRule .* index.php [L]
После этого редирект не работает.
Если хочется изврата, то как-то так:
RewriteCond %{QUERY_STRING} (page=[^&]+)RewriteCond %1\ %{QUERY_STRING} ^(\S+).+(id=[^&]+)RewriteCond %1&%2\ %{QUERY_STRING} ^(\S+).+(cat1=[^&]+)RewriteCond %1&%2\ %{QUERY_STRING} ^(\S+).+(cat2=[^&]+)RewriteCond ?%1&%2\ %{THE_REQUEST} !^(\S+)[^?]+\1\ HTTPRewriteRule ^ /?%1&%2 [R=301,L]
Ну тогда применить аналогичный шаблон с RewriteRule
RewriteEngine On RewriteRule ^dir/index.php(?:/(.*))?$ /dir/$1 [L,R=301]
Ставить в самое начало файла.
А ставите правила в .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]
RedirectMatch 301 ^/([^/]+)/news1/$ /$1/news2/
В старт-посте регулярки расчитаны на адреса с / после index.php
RedirectMatch 301 ^/dir/index.php(?:/(.*))?$ /dir/$1