Cómo deshabilitar el acceso directo a los archivos php bajo Apache

  
                  

Al principio, quería desactivar la URL del sufijo php directamente para que no se accediera a las reglas de reescritura. Pero más tarde descubrió que las reglas de reescritura se llaman de forma recursiva. Si prohibe php directamente en las reglas de reescritura, las reglas que se reescriben en el archivo php también serán inválidas. RewriteEngineOn

RewriteRule ^ test $ /test.php [L]

RewriteRule ^ test.php $$ 0 [F, L]

Llamada recursiva Esto es terrible, al principio La redirección de URL se verifica una vez al acceder /probar, luego se redirige internamente a /test.php cuando coincide con ^ prueba $, pero la redirección interna también activa la reescritura de URL, así que vuelva a verificar y haga coincidir con ^ prueba.php $ Se vio obligado a operar directamente [F] (Prohibido), por lo que se convirtió en un error 403. En este caso, debe determinar si el servidor lo ha redirigido. En este momento hay una REDIRECT_URL en la variable del servidor que se puede usar, así que traté de usar esto para hacer un juicio.

RewriteEngineOn

RewriteRule ^ prueba $ /test.php [L]

RewriteCond% {REDIRECT_URL} ^ $

RewriteRule. * $ 0 [F, L] Este acceso /prueba de escritura sigue siendo 403, una pequeña revisión, encontró que RewriteCond% {REDIRECT_URL} siempre está vacío, esto es un dolor, por lo que no hay manera de prohibir directamente php en las reglas de reescritura. Pero se puede hacer de una manera menos costosa. Es para juzgar REDIRECT_URL en el archivo php. Aunque este método se puede implementar, se siente muy inferior, pero hasta ahora no se ha encontrado una mejor manera.

$ _SERVER ['REDIRECT_URL'] ordie ('Forbidden');

//Esto es solo una visualización del texto, y el código de error HTTP que se emitirá cuando se use realmente.

echo $ _SERVER ['REDIRECT_URL']; //Acceda con éxito a la información de la pantalla

? >

Coloque este código PHP en la referencia global y modifíquelo. No hay problema con ello. Aunque no es una solución perfecta, al menos se resuelve. En el futuro, es posible que encuentre una mejor manera.

Copyright © Conocimiento de Windows All Rights Reserved