Habilitar rewrite en Apache con PHP

Habilitar rewrite en Apache con PHP

Si me has seguido en Youtube verás que tengo el curso de PHP para hacer una aplicación web completa con MVC. En esta aplicación web habilitamos rutas modificando a través de un archivo .htaccess la forma de capturar las rutas para nuestro modelo.

El problema que tengo es que en Mac OS cada que se actualiza el sistema operativo las configuraciones también se resetean. Por esto este post, para que si ustedes también tienen que configurar Apache para que pueda interpretar PHP y el rewrite con htaccess lo puedas hacer.

¿Para qué sirve el rewrite?

El motor de rewrite es una parte de los servidores web que nos permite modificar la forma de procesar las URLs de un sitio. Generalmente se usa por los frameworks para poder crear mapeo de rutas bajo una estructura definida. Es por eso que les menciono que para el curso de PHP para crear una app MVC o crear una aplicación web completa con PHP es necesario tenerlo habilitado, ya que a través de un archivo .htaccess es que configuramos el rewrite, pero éste debe estar activado en nuestro servidor Apache.

Activar mod_rewrite

Lo primero es ir a la carpeta de /etc/apache2/ y vamos a ver nuestro archivo de configuración httpd.config

tutorial-apache-rewrite-01.png Carpeta de configuración de Apache

Ahora, para abrir el archivo arrástralo a tu editor favorito, en mi caso Visual Studio Code. Vas a buscar la siguiente línea

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php7_module libexec/apache2/libphp7.so

La primera línea es para activar el módulo de rewrite. La segunda es para habilitar PHP 7. Descomenda las dos líneas quitando el #.

La siguiente línea a buscar es en tus directorios virtuales. Si estás usando el directorio que viene por defecto busca esta ruta

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

Cambia la línea de AllowOverride None a AllowOverride All y guarda los cambios. Si Visual Studio te avisa que no puede hacer los cambios presiona que quieres intentarlo con sudo y listo.

tutorial-apache-rewrite-02.png Carpeta de configuración de Apache

Ahora intenta acceder a un archivo PHP que tenga un .htaccess que modifique la forma de procesar las URLs y verás que ya no debes tener problemas al ver el resultado. Este cambio si no lo estás haciendo en el directorio virtual predeterminado tienes que hacerlo en los directorios donde quieras habilitar que se pueda sobreescribir la URL con rewrite.