Estou tentando restringir um URL específico para estar disponível fora da rede apenas para endereços IP específicos. Quando um usuário externo tenta acessar esse URL e não da lista de IPs, ele deve ser redirecionado para a página inicial.
Isto é o que eu tentei até agora sem sorte. A última parte redireciona todos para a página inicial, independentemente do 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: a URL / secret é de fato uma URL virtual e não existe fisicamente na unidade.
ip
apache-2.4
301-redirect
restriction
Denis Rendler
fonte
fonte
RewriteEngine On
?Respostas:
Use
Order
,Deny
eallow
para especificar quem tem acesso ao seu vhost ou localização.Quando se trata de redirecionar, pense em uma página de erro personalizada . Isso é muito mais geral, porque todo acesso não autorizado deve provocar um erro 403 e, portanto, pode ser avaliado facilmente.
Eu nunca fiz isso com o apache, mas use essa estratégia com o nginx. Para o apache, algo assim deve fazer:
fonte
ErrorDocument
parte é dos documentos 2.4. Não uso apache, desde nginx está ao redor, mas assumiu queOrder
,Deny
eAllow
ainda estão por aí no Apache 2.4As opções Order, Deny e Allow foram substituídas no Apache 2.4 por
Você pode restringir explicitamente endereços usando o seguinte:
O exato oposto também é verdadeiro: para restringir tudo e permitir apenas um subconjunto, use o seguinte:
Mais informações estão disponíveis na documentação de controle de acesso do Apache 2.4.
Em relação à sua pergunta (editada por falta de pontos para adicionar um comentário), você pode simplesmente definir um ErrorDocument com o índice definido como o caminho da URL:
Espero que isto ajude!
fonte
allow
apesar de descontinuado,Require 127.0.0.1
ainda permite o acesso por endereço externo da máquina local, onde a sintaxe de permissão permite apenas o endereço 127.Para o Apache 2.4, você pode usar <RequireAny>. Você pode fazer isso em um arquivo vhost ou .htaccess ....
Documentos do Apache https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
fonte