Шаблон ^blog/(.+)$ совпадет не только с /blog/post, но и с /blog/post.html, так что в итоге произойдёт зацикливание /blog/post.html.html и тд.
Самый простой способ исправить это заменить (.+) на ([^.]+) тогда шаблон не совпадет с адресами, где есть точка.
RewriteRule ^blog/([^.]+)$ /blog/$1.html [R=301,L]
RewriteRule ^about/&page=(\d+)$ /about/page/$1/ [R=301,L]
Нужен модификатор шаблона PCRE_DOTALL http://php.net/manual/ru/reference.pcre.pattern.modifiers.php
$count_query = preg_replace('|select.+from|s', 'SELECT count(*) FROM ', $count_query);
Правила для редиректа должны стоять выше правил для ЧПУ.
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteRule ^category/(.+)$ httр://site.ru/$1 [R=301,L]
Эти строки нужно перенести в начало файла.
Должно получиться примерно так:
Options +FollowSymLinks -Indexes RewriteEngine On RewriteRule ^category/(.+)$ httр://site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
www.site.ru/page/ => www.site.ru/page site.ru/page/ => www.site.ru/page site.ru/page => www.site.ru/page
Правила применяются последовательно и нужно их расставить в правильном порядке.
Первым идёт редирект всего что со слэшем в конце.
Вторым идёт редирект для www.
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ http://www.site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} " (/vitrina/svarochnye-apparaty\?.*)/modal" RewriteRule ^ %1 [R=301,L]
Или так
RewriteCond %{QUERY_STRING} ^(.*)/modal RewriteRule ^vitrina/svarochnye-apparaty$ /$0?%1 [R=301,L]
В принципе верно только в шаблоне исправить ^/ на ^, т.к. строка, с которой работает RewriteRule, не начинается с "/".
Это подробно описано в статье https://habrahabr.ru/company/sprinthost/blog/129560/ .
Флаг [R] даёт редирект с кодом 302.
Для редиректа 301 нужно [R=301,L].
Например, так:
RewriteCond %{DOCUMENT_ROOT}/$1.htm -f RewriteRule ^(load/papka/[^/]+)$ $1.htm RewriteCond %{THE_REQUEST} " /\?(\S+) " RewriteCond %{DOCUMENT_ROOT}/-%1.htm -f RewriteRule ^ -%1.htm
Почему не работает RewriteRule ^\?(.*)$ -$1\.htm и как составлять правила хорошо расписано в статье https://habrahabr.ru/company/sprinthost/blog/129560/.
\[.*\] \[.*\] \[.*\] \[client <HOST>.* WP LOGIN FAILED.*
Или даже так
\[client <HOST>.* WP LOGIN FAILED
Редирект происходит когда в ErrorDocument указан полный адрес с http.
Нужно поменять адрес на относительный.
ErrorDocument 404 /s/missing.html