Logotipo de PHPDesde que comencé mi aprendizaje de PHP me encontré en la necesidad de establecer un único punto de entrada para una determinada aplicación. Me pondría a buscar un poco de información entonces, supongo (no recuerdo bien) y me topé con una solución para Apache, basada en archivos "htaccess", que, es la que vengo utilizando desde entonces, no sólo yo, sino otros muchos autores de proyectos de software libre a cuyo código fuente he podido echar un vistazo, cuando menos.

Efectivamente, en otros servidores debe poder hacerse algo similar, y de hecho puede hacerse, pero, la solución de que hablo usando los "htaccess" de Apache, se basa en las siguientes líneas, que habría que añadir al archivo "htaccess" del directorio raíz de nuestra aplicación. Estas líneas son mágicas, y demuestran, entre otras cosas, la potencia de los archivos "htaccess" de Apache, aunque, como digo, sería posible realizar lo mismo en otros servidores que contaran con alguna especie de "módulo rewrite".

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php

Las anteriores instrucciones en un archivo "htaccess" del directorio raíz de nuestra aplicación, harán que cualquier petición HTTP se rediriga al archivo "index.php" de dicho directorio, y, a partir de ahí, nosotros seremos los encargados de ofrecer la respuesta apropiada al usuario. Veamos las líneas una por una, porque no son del todo obvias.

La primera línea relevante establece una condición para cualquier petición que se lleve a cabo, siempre que la petición no correponda a un archivo realmente existente (de ahí la "bandera" "-f", de "file"). La segunda línea establece una condición similar, pero, en este caso para directorios. A continuación se establece la regla a usar para ese tipo de peticiones.

Lo que vienen a decir esas líneas es más o menos, traducido a nuestro lenguaje: "Para cualquier petición que no solicite un archivo o un directorio realmente existentes, utiliza la regla que indico a continuación". Y, como puede verse, la regla no es más que redirigir dichas peticiones al archivo "index.php". Ese será el único punto de entrada de nuestra aplicación.