Я пытаюсь ограничить доступ к конкретному URL-адресу за пределами сети только определенными IP-адресами. Когда пользователь снаружи пытается получить доступ к этому URL, а не из списка IP-адресов, он должен быть перенаправлен на домашнюю страницу.
Это то, что я пытался до сих пор без какой-либо удачи. Последняя часть перенаправляет всех на домашнюю страницу независимо от IP.
<Location "/secret">
# <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
# Redirect 303 "/secret" /
# </If>
RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]
LogLevel debug rewrite:trace6
</Location>
PS: URL / secret на самом деле является виртуальным URL и физически не существует на диске.
ip
apache-2.4
301-redirect
restriction
Денис Рендлер
источник
источник
RewriteEngine On
?Ответы:
Используйте
Order
,Deny
иallow
указать , кто имеет доступ к виртуальному хосту или местоположению.Когда дело доходит до перенаправления, подумайте о специальной странице ошибок . Это гораздо более общий вопрос, поскольку каждый несанкционированный доступ должен вызывать ошибку 403 и, следовательно, может быть легко оценен.
Я никогда не делал этого с apache, но использую эту стратегию с nginx. Для Apache что-то вроде этого должно сделать:
источник
ErrorDocument
часть из 2,4 документов. Я не использую Apache, так как Nginx вокруг, но предполагается , чтоOrder
,Deny
иAllow
все еще вокруг в апач 2,4Параметры Порядок, Запретить и Разрешить были заменены в Apache 2.4 на
Вы можете явно ограничить адреса с помощью следующего:
Также верно и обратное, чтобы ограничить все и разрешить подмножеству использовать следующее:
Более подробная информация доступна в документации по контролю доступа Apache 2.4.
Что касается вашего вопроса (отредактированного мной из-за отсутствия точек для добавления комментария), вы можете просто установить ErrorDocument с индексом, заданным как URL-путь:
Надеюсь это поможет!
источник
allow
хотя и устаревшие,Require 127.0.0.1
но разрешить доступ по внешнему адресу с локальной машины, где разрешить синтаксис разрешить только с 127 адресов.Для Apache 2.4 вы можете использовать <RequireAny>. Вы можете сделать это в файле vhost или .htaccess ....
Apache docs https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
источник