Правило с редиректом нужно поставить выше остальных внутренних перенаправлений.
^ - обозначает начало строки.
$ - обозначает конец строки.
RewriteCond %{REMOTE_ADDR} ^85\.26\.
Тут проверяется, что ip начинается на 85.26. и остальная часть может быть любой, так что $ тут не нужен.
Для 85.26.165.*, 85.26.232-235.*
RewriteCond %{REMOTE_ADDR} ^85\.26\.165\. [OR] RewriteCond %{REMOTE_ADDR} ^85\.26\.23[2-5]\. RewriteCond %{REQUEST_URI} /kak-vybrat-cvet-rozy\.html RewriteRule .* - [F]
А если надо заблокировать все IP, начинающиеся с 85.26.*.*
RewriteCond %{REMOTE_ADDR} ^85\.26\. RewriteCond %{REQUEST_URI} /kak-vybrat-cvet-rozy\.html RewriteRule .* - [F]
В переменной %{REQUEST_URI} адрес начинается с /.
RewriteCond %{REMOTE_ADDR} ^85\.26\.232\.185$
RewriteCond %{REQUEST_URI} ^/stranica-primer\.html
RewriteRule ^.*$ - [F]
Можно чуть сократить.
RewriteRule ^stranica-primer\.html$ - [F]
Используя флаг [OR] можно добавить ещё правил с ip.
RewriteCond %{REMOTE_ADDR} ^11\.22\.22\.22$ [OR] RewriteCond %{REMOTE_ADDR} ^33\.22\.22\.22$ [OR] RewriteCond %{REMOTE_ADDR} ^85\.26\.232\.185$ RewriteRule ^stranica-primer\.html$ - [F]
RewriteCond %{REMOTE_ADDR} =11.22.22.22 [OR] RewriteCond %{REMOTE_ADDR} =33.22.22.22 [OR] RewriteCond %{REMOTE_ADDR} =85.26.232.185 RewriteRule ^stranica-primer\.html$ - [F]
Ну и ставить блокировку выше остальных правил.
Там дело не в RewriteBase, а в том, что mod_rewrite запускает обработку запроса снова и снова, до тех пор, пока он не перестанет меняться.
Запрос stati/page.php будет преобразован в stati/stati.php?url=page и цикл обработки запустится заново.
Адрес stati/stati.php совпадает с шаблоном ^stati/(.*).php/?$ и будет преобразован в stati/stati.php?url=stati
Это продробно описано в статье http://habrahabr.ru/company/sprinthost/blog/129560/
Нужно исключить повторную обработку этим правилом.
Есть несколько способов.
RewriteRule ^stati/(?!stati\.php)(.*)\.php/?$ stati/stati.php?url=$1
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^stati/(.*).php/?$ stati/stati.php?url=$1
RewriteRule ^stati/stati.php - [L] RewriteRule ^stati/(.*).php/?$ stati/stati.php?url=$1
RewriteCond %{QUERY_STRING} location=([^&]+) RewriteRule ^(index\.php)?$ /%1? [R=301,L] RewriteCond %{THE_REQUEST} " /([^?]*)\? " RewriteRule ^ /%1? [R=301,L]
RewriteEngine On RewriteCond %{QUERY_STRING} index=newt&newt=28 RewriteRule ^ http://moldfootball.com/?index=konf [R=301,L]
RewriteCond %{THE_REQUEST} " /index\.php\?name=Files&(op=view)_file&l(id=\d+)" RewriteRule ^ /index.php?name=files&%1&%2 [R=301,L]
location /forums/ { rewrite ^/forums/ipb\.html /forums/index.php; rewrite ^/forums/index\.html? /forums/index.php; rewrite ^/forums/main\.html /forums/index.php?act=idx; rewrite ^/forums/topic([0-9]+)\.html$ /forums/index.php?showtopic=$1; rewrite ^/forums/topic([0-9]+)s([0-9]+)\.html$ /forums/index.php?showtopic=$1&st=$2; rewrite ^/forums/forum([0-9]+)\.html$ /forums/index.php?showforum=$1; rewrite ^/forums/cat([0-9]+)\.html$ /forums/index.php?act=SC&c=$1; rewrite ^/forums/ptopic([0-9]+)\.html$ /forums/index.php?act=Print&client=printer&f=1&t=$1; rewrite ^/forums/user([0-9]+)\.html$ /forums/index.php?showuser=$1; location ~ \.php$ { # А тут уже ставим свой fastcgi_pass } }
Модуль mod_dir с настройками по умолчанию делает редирект и добавляет завершающий слеш для существующих каталогов.
Nginx принимает подключения по обоим протоколам, а проксирует на Apache по http.
В результате получается что редирект, который создаёт mod_dir ведёт на http.
Это можно отключить в .htaccess
DirectorySlash Off
RewriteCond %{QUERY_STRING} =t=190&PAGEN_1=10 [OR] RewriteCond %{QUERY_STRING} =PAGEN_1=10&t=190 RewriteRule ^rezultaty/$ /$0?PAGEN_1=10 [R=301,L]
Или
RewriteCond %{QUERY_STRING} (?:^|&)t=190(?:&|$) RewriteCond %{QUERY_STRING} (?:^|&)(PAGEN_1=10)(?:&|$) RewriteRule ^rezultaty/$ /$0?%1 [R=301,L]
RewriteRule ^([^/]+/)\d+-([^/]+\.html)$ /$1$2 [R=301,L]