У меня есть URL-адрес, определенный в правилах перезаписи ('/ admin'), доступ к которому я хотел бы ограничить только 1 IP-адресом. Я представляю, как лучше всего использовать .htaccess, а не кодировать его. Я пробовал это, но это не сработало. Он заблокировал все URL-адреса, а не только URL-адреса с помощью / admin.
<Location /admin>
Deny from all
Allow from x.x.x.x
</Location>
Вы можете использовать флаг [F] RewriteRule, чтобы запретить доступ ко всем, кроме разрешенных IP-адресов. См. Следующий пример (я не тестировал это, но думаю, что это правильно). Если вы хотите использовать директиву allow, другой способ сделать это - использовать директивы Rewrite для установки переменной среды с помощью флага [E = ...] RewriteRule, а затем сделать Allow from env = environment_var_goes_here (см. http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow)
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/admin.*
RewriteCond %{REMOTE_ADDR} !^x\.x\.x\.x$
RewriteRule .* - [F]
Примечание: я написал этот пример для сопоставления любого URL-адреса, начинающегося с / admin, но если вы хотите просто сопоставить / admin, удалите. * И замените его на $.
Директива Location не разрешена в файле .htaccess. В противном случае вы можете добавить эти строки в файл конфигурации Apache / файл виртуального хоста.