Creando un CMS (II)
En la anterior entrada nos habíamos quedado creando la estructura de directorios -que habíamos llamado skel- de lo que sería el gestor de contenidos. El siguiente paso lógico sería centralizar todos los accesos a un solo script: index.php. Bienvenido a index.php
Es posible que centralizar todos los accesos en un solo archivo que a posteriori despache en base a diferentes urls tenga sus inconvenientes, pero a mi modo de verlo todo son ventajas puesto que hay un único control para todas las acciones de la aplicación.Para convertir a nuestro index.php en el rey de la fiesta deberemos aliarnos con su gran amigo el .htaccess. El mensaje que le tendremos que mandar será el siguiente:
RewriteEngine on
RewriteRule ^(.*)$ /index.php
Pases vip
Cierto es que tendremos problemas con los elementos estáticos (imágenes, archivos de javascript, estilos css...), por lo que vamos a repartir varios pases vip para nuestros invitados de lujo:RewriteEngine on
RewriteCond $1 !^(_img|_js|_themes)
RewriteRule ^(.*)$ /index.php
Despachando
Supongamos que hemos creado un dominio virtual para el cms en local llamado micms -gran alarde de originalidad-, cargando http://micms/ tendremos el esqueleto que estamos montando. Una vez puesto el .htaccess y un index.php con phpinfo() -por ejemplo- podremos cargar cualquier tipo de url que siempre hará referencia a la misma (http://micms/una, http://micms/dos.php, http://micms/33.html...).¿Qué pasaría si ahora, en vez del phpinfo() ponemos en ese index.php algo tal que así?:
<?php
$request = ltrim($_SERVER['REQUEST_URI'], '/');
$vars = explode('/', $request);
foreach ($vars as $var)
{
if(file_exists('/app/'.$var.'.html')
include('/app/'.$var.'.html');
else
include('/app/error.html');
}
?>
¡Ya sabemos despachar! -obviemos chistes fáciles-. Como ejercicio para casa -siempre he querido decir algo así- se podría mejorar este código muy mucho y hacerlo un poco más universal, ¿alguien se da cuenta de alguno de los fallos que tienen estas 10 lineas?. Lo veremos en la siguiente entrega.