Incluir otro archivo htaccess desde.htaccess
(4)
¿Es posible incluir reglas de otro archivo htaccess en .htaccess?
.htaccess
RewriteEngine On
RewriteCond ...
RewriteRule ...
Include .htaccess1
.
.
Include .htaccess2
Hacer esto da 500. Incluir no permitido aquí ¿Hay alguna manera de hacer esto? Porque necesito esto bastante mal.
Es posible - en 2-3 pasos ...
Crea tu archivo de direcciones IP para denegar. Podría ser un archivo .php, un archivo .txt, incluso un archivo .csv.
Cree un script .php (o idioma de su elección), cuyo propósito es generar un archivo llamado ".htaccess".
Cada vez que actualice su archivo de direcciones IP a Denegar, ejecute dicho script 2) .php y genere un nuevo .htaccess para cada uno de sus dominios.
Si tiene declaraciones además de IP para denegar, codifíquelas en su script .php para que salgan primero. Ver https://www.askapache.com/htaccess/
El script .php podría verse genéricamente de la siguiente manera:
$output = "statement1".PHP_EOL;
$output .= "statement2".PHP_EOL;
$output .= "statement3".PHP_EOL;
...
Luego, cuando esté listo para la porción DENY:
$denyList = file_get_contents("the/list/of/IPs.txt"); // or .php etc.
$ArrayDenyList = explode(PHP_EOL,$denyList); // or your line ending character, if necessary
foreach($ArrayDenyList as $key =>$value) {
$output .= ''Deny from ''.$value.PHP_EOL;
}
Luego escriba el archivo: (probablemente tenga una forma estándar):
$handle = fopen(.htaccess,"w"); //complete path if in another domain
fwrite($handle,$output);
fclose($handle);
echo "Success - <p>";
Si tiene más de un Dominio, entonces tenga una Matriz de la ruta de ese Nombre de Dominio, y busque esa Matriz, y escriba a cada ruta.
Si algunos dominios ya tienen requisitos de .htaccess, póngalo en un archivo .txt legible ... haga un file_get_contents (sobre eso), "output =" eso, agregue el resultado "Denegar, entonces" = ... "cada uno en un bucle "foreach ()".
De todos modos ... has hecho todas estas cosas antes ... solo aplica cada técnica a este escenario.
Un archivo .htaccess no puede "incluir ()" otros archivos, pero un script .php puede hacerlo, y los scripts .php pueden generar archivos con el nombre ".htaccess", que pueden compilarse mediante script.
El método anterior funciona, y comencé a hacerlo cuando necesitaba crear filas de "RewriteRule" para cada uno de mis catálogos de productos. Cada vez que agrego un nuevo producto, ejecuto mi script que genera un nuevo archivo .htaccess ... creado a partir de mi tabla de productos SQL. Similar a mi script .php que "fwrite" es mi sitemap.xml.
(Espero que no se pierda la puntuación .php o "$" en este tipeo).
No puede incluir reglas, declaraciones, definiciones o directivas de otros archivos de un archivo htaccess. La directiva Include
no se puede usar dentro de un archivo htaccess. Parte del punto de un archivo htaccess es actuar de manera similar a un bloque <Directory>
pero ser autónomo e incapaz de acceder a cosas fuera del directorio mismo (los subdirectorios están bien) pero más específicamente nada fuera de la raíz del documento. De esta forma, alguien que haga cosas maliciosas no podrá señalar solicitudes o incluir archivos / contenido de otros directorios pirateando el archivo htaccess.
Específicamente en el ámbito de mod_rewrite, hay opciones para RewriteOptions
que permiten heredar reglas de reescritura del archivo htaccess desde un directorio principal , pero nada que incluya arbitrariamente reglas desde cualquier lugar.
Puedes crear una secuencia de comandos del lado del servidor como PHP ".htaccess.php" y adentro poner tus includes. Por supuesto, debe configurar apache: AccessFileName .htaccess.php
Sé que esto puede ser un poco tarde, pero en cambio si está intentando implementar una prohibición de IP, o un tipo similar de contenido de regla dinámica, use la última regla en su archivo .htaccess para señalar la solicitud en un solo .php o similar script en lenguaje que realiza esta función (su secuencia de comandos individual puede cargar las reglas dinámicas en su propio formato y tomar la misma decisión que tendría Apache dependiendo de lo que realmente intenta lograr) luego pasa la solicitud a la página real que se solicita. Agrega una capa al procesamiento completo de la solicitud, pero le da la misma función dinámica a todas las páginas sin la necesidad de generar reglas directas para el servidor e intentar que Apache tome las decisiones por usted.
Solo pensé en agregar este pensamiento para cualquier persona que pueda tropezar con esta publicación en busca de algo similar.