Rewrite rules de CakePHP para Nginx y Apache

Dificultad: Fácil
Tiempo de Lectura: 2 minutos

Hola, en esta oportunidad vamos a hablar sobre como configurar los 2 servidores web más utilizados como son Apache y Nginx para colocar nuestra aplicación realizada en el framework de php llamado Cakephp, aquí vas a encontrar los archivos de configuración de forma simple para que lo puedas implementar en tus proyectos. Si bien en Apache suele funcionar casi todo por defecto, vamos a explorar su configuración y también veremos como configurar cakephp en Nginx, que suele ser un mundo totalmente diferente al viejo Apache.

 

Configuración de Apache2 para nuestro proyecto Cakephp

 

En tu archivo de httpd.conf debes verificar las siguientes configuraciones adentro de la etiqueta virtualhost

En la etiqueta Directory

1. Options FollowSymLinks
2. AllowOverride All : debe estar en All

<Directory/>
    Options FollowSymLinks
    AllowOverride All
</Directory>

 

<Directory>
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order Allow,Deny 
Allow from all
</Directory/>

Ahora debes verificar si tienes instalado el modulo rewrite y colocar esta configuración

 
  <IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
  </IfModule>

 

Configuración de Nginx para nuestro proyecto Cakephp

 

Configuración de Ejemplo

server {
    listen   80;
    server_name example.com;

    # root directive should be global
    root   /var/www/example.com/public/app/webroot/;
    index  index.php;

    access_log /var/www/example.com/log/access.log;
    error_log /var/www/example.com/log/error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Lineas importantes

1. Document root de nuestro proyecto, termina en app/webroot/

root   /var/www/example.com/public/app/webroot/;

2. Redirección de todas las peticiones al index.php

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

3. Nuestro bloque de Php-fpm

   location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

Si has seguido estos pasos ya deberías tener cakephp funcionando tanto en Apache como con Nginx. Avísanos si encuentras algún problema puntual con estas configuraciones o si tienes una mejor configuración para aportar.


¿Te resultó útil el artículo? Compártelo con tus colegas: