Estoy tratando de restringir una URL específica para que esté disponible fuera de la red solo a direcciones IP específicas. Cuando un usuario externo intenta acceder a esa URL y no desde la lista de IP, debe ser redirigido a la página de inicio.
Esto es lo que he intentado hasta ahora sin suerte. La última parte redirige a todos a la página de inicio independientemente de la 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>
PD: la URL / secret es, de hecho, una URL virtual y no existe físicamente en la unidad.
ip
apache-2.4
301-redirect
restriction
Denis Rendler
fuente
fuente
RewriteEngine On
?Respuestas:
Utilizar
Order
,Deny
yallow
para especificar quién tiene acceso a su host virtual o la ubicación.Cuando se trata de redireccionar, piense en una página de error personalizada . Esto es mucho más general, porque cada acceso no autorizado debe provocar un error 403 y, por lo tanto, puede evaluarse fácilmente.
Nunca hice esto con apache, pero uso esta estrategia con nginx. Para apache, algo como esto debería hacer:
fuente
ErrorDocument
parte es de los 2.4 documentos. No uso apache, ya que nginx está cerca, pero asumí esoOrder
,Deny
yAllow
todavía están en apache 2.4Las opciones Ordenar, Denegar y Permitir se han reemplazado en Apache 2.4 con
Puede restringir explícitamente las direcciones mediante el uso de lo siguiente:
Lo opuesto exacto también es cierto, para restringir todo y solo permitir un subconjunto use lo siguiente:
Hay más información disponible en la documentación de control de acceso de Apache 2.4.
En lo que respecta a su pregunta (editado la mía debido a la falta de puntos para agregar un comentario), debería poder simplemente establecer un ErrorDocument con el índice establecido como la ruta URL:
¡Espero que esto ayude!
fuente
allow
aunque está en desuso,Require 127.0.0.1
todavía permitir el acceso por dirección externa desde la máquina local, mientras que la sintaxis de permitir solo permite desde 127 direcciones.Para Apache 2.4, puede usar <RequireAny>. Puede hacerlo en un vhost o un archivo .htaccess ...
Documentos de Apache https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
fuente