- Код: выделить все
RewriteRule .* http://test215.tk/ [L]
Когда адрес назначения начинается c
http://, https:// или ftp:// это трактуется как внешняя ссылка и выполняется редирект т.е. аналогично добавлению флага [R].
Для внутреннего перенаправления нужно использовать относительный адрес вроде /page.html.
В переменной %{REQUEST_URI} содержится не вся ссылка целиком
http://test215.tk/test/, а только путь /test/.
Имя домена находится в %{HTTP_HOST}.
По умолчанию шаблон применяется как регулярное выражение и если не указать маркеры начала и конца строки ^ $, то совпадение
может быть не с целой строкой, а только с частью строки.
RewriteCond %{REMOTE_ADDR} 97.241.170.138
Такая конструкция найдёт совпадение в адресе 197.241.170.138 и ещё нужно учитывать, что в регулярном выражении точке соответствует любой символ.
RewriteCond %{REMOTE_ADDR} 97.2.1.138
Такой шаблон совпадёт с 97.241.138, 97.231.138 и т.д.
Так что желательно тут экранировать точку и указать начало и конец строки.
RewriteCond %{REMOTE_ADDR} ^97\.2\.1\.138$
RewriteCond %{REMOTE_ADDR} =97.2.1.138
Если перед шаблоном поставить знак равно, то он сравнивается как обычная строка, а не как регулярное выражение.
Тогда отпадает необходимость в \. ^ $.
Ну и ещё иногда против зацикливания перенаправления нужно добавить RewriteCond %{ENV:REDIRECT_STATUS} ^$
Пример для нескольких ip 97.241.170.15, 97.241.170.40, 97.241.170.180
- Код: выделить все
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REMOTE_ADDR} ^97\.241\.170\.(15|40|180)$
RewriteCond %{REQUEST_URI} !/test/
RewriteRule .* / [L]