.htaccess - redireccionar - rewritecond htaccess
Denegar todo, permitir solo una IP a través de htaccess (10)
Intento negar todo y permitir solo una única IP. Pero me gustaría tener el siguiente htaccess trabajando para esa única IP. No encuentro la manera de que ambos funcionen: negar todo y permitir solo uno, más las siguientes opciones:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#''system'' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn''t in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename ''application'' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn''t true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don''t have mod_rewrite installed, all 404''s
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
¿Hay alguna manera de hacer que esto funcione?
Además de la respuesta de @David Brown, si desea bloquear una IP, primero debe permitir todo y luego bloquear las direcciones IP como tales:
<RequireAll>
Require all granted
Require not ip 10.0.0.0/255.0.0.0
Require not ip 172.16.0.0/12
Require not ip 192.168
</RequireAll>
First line allows all
Second line blocks from 10.0.0.0 to 10.255.255.255
Third line blocks from 172.16.0.0 to 172.31.255.255
Fourth line blocks from 192.168.0.0 to 192.168.255.255
Puede usar cualquiera de las anotaciones mencionadas anteriormente para satisfacer sus necesidades CIDR.
Esto se puede mejorar utilizando la directiva diseñada para esa tarea.
ErrorDocument 403 /specific_page.html
Order Allow,Deny
Allow from 111.222.333.444
Donde 111.222.333.444 es su dirección IP estática.
Al utilizar la directiva "Solicitar permiso, denegar", las solicitudes deben coincidir con Permitir o Rechazar, si no se cumple, la solicitud es denegada.
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order
Mejorando un poco más las respuestas anteriores:
ErrorDocument 403 /maintenance.html
Order Allow,Deny
Allow from #.#.#.#
Dónde:
-
#.#.#.#
es su IP: ¿Cuál es mi dirección IP? - Para
maintenance.html
hay un buen ejemplo aquí: Página de mantenimiento simple
No pude usar el método 403 porque quería la página de mantenimiento y las imágenes de página en una subcarpeta en mi servidor, así que utilicé el siguiente enfoque para redireccionar a una ''página de mantenimiento'' para todos, excepto una única IP *
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !**.**.**.*
RewriteRule !^maintenance/ http://www.website.co.uk/maintenance/ [R=302,L]
Fuente: Creación de una página de espera para ocultar su blog de WordPress
Puede tener más de un IP o incluso otro tipo de permitir como usuario, nombre de host, ... más información aquí https://www.askapache.com/htaccess/setenvif/
SetEnvIf remote_addr ^123.123.123.1$ allowedip=1
SetEnvIf remote_addr ^123.123.123.2$ allowedip=1
SetEnvIf remote_addr ^123.123.123.3$ allowedip=1
SetEnvIf remote_addr ^123.123.123.4$ allowedip=1
Order deny,allow
deny from all
allow from env=allowedip
Puede usar lo siguiente en htaccess para permitir y denegar el acceso a su sitio:
SetEnvIf remote_addr ^1/.2/3/.4/.5$ allowedip=1
Order deny,allow
deny from all
allow from env=allowedip
Primero establecemos un allowip de variable env si la dirección IP del cliente coincide con el patrón, si el patrón coincide, entonces a la variable env permitip se le asigna el valor 1 .
En el siguiente paso, utilizamos las directivas Permitir, denegar para permitir y denegar el acceso al sitio. Order deny,allow
representa el orden de deny
y allow
. deny from all
esta línea le dice al servidor que niegue a todos. la última línea allow from env=allowedip
permite el acceso a una única dirección IP para la que establecemos la variable env.
Reemplace 1/.2/.3/.4/.5
con su dirección IP permitida.
Refrences:
Sé que esta pregunta ya tiene una respuesta aceptada, pero la documentación de Apache dice:
Las directivas Permitir, Denegar y Ordenar, proporcionadas por mod_access_compat, están en desuso y desaparecerán en una versión futura. Debe evitar usarlos y evitar los tutoriales obsoletos que recomiendan su uso.
Entonces, una respuesta más a prueba de futuro sería:
<RequireAll>
Require ip xx.xx.xx.xx yy.yy.yy.yy
</RequireAll>
Con suerte, he ayudado a evitar que esta página se convierta en uno de esos "tutoriales obsoletos". :)
Si desea usar mod_rewrite para el control de acceso puede usar condiciones como agente de usuario, referencia de http, código remoto, etc.
Ejemplo
RewriteCond %{REMOTE_ADDR} !=*.*.*.* #you ip address
RewriteRule ^$ - [F]
Refrences:
Versión ligeramente modificada de lo anterior, que incluye una página personalizada para que se muestre a quienes se les niegue el acceso:
ErrorDocument 403 /specific_page.html
order deny,allow
deny from all
allow from 111.222.333.444
... y de esa manera esas solicitudes que no provengan de 111.222.333.444 verán specific_page.html
(publicar esto como comentario se veía terrible porque se pierden nuevas líneas)
order deny,allow
deny from all
allow from <your ip>