RewriteBase variable en base al nombre del dominio

Facebook
Twitter
LinkedIn
El servidor WEB Apache ofrece un módulo el cual permite tener URL’s amigables, este es conocido como el mod_rewrite.Muchos de los frameworks basados en PHP hoy en día toman ventaja del mod_rewrite para construir su patrón URL tipo MVC (Modelo-Vistas-Controlador) por ejemplo: CodeIgniter, Zend Framework, CakePHP entre otros.Existe una configuración de este módulo el cual permite predefinir cual es el URL base en donde los archivos finales deben ser cargados, esta configuración es conocida como el RewriteBase. Una limitante es que solo se puede definir una sola vez en el .htaccess.Muchos desarrolladores utilizan diferentes servidores como parte del ciclo de vida del proyecto, por ejemplo un servidor para Desarrollo (DEV), otro para Pruebas (STAGE) y el final de producción (PROD). En muchas ocasiones la URL del proyecto puede variar en base a este servidor lo cual presenta un problema para el uso del mod_rewrite de apache.La solución: crear una variable que almacena la ruta por servidor y luego utilizar esta variable en la definición de la regla RewriteRule.Aquí les dejo con el código que puede utilizar para soportar diferentes RewriteBase en base al nombre del servidor. Esto debe estar en el .htaccess al mismo nivel del root del proyecto.
# Activation of the URL Rewriting
Options +FollowSymlinks
RewriteEngine On

# RewriteBase equivalent - Production
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule . - [E=REWRITEBASE:/]

# RewriteBase equivalent - Staging / Test Server
RewriteCond %{HTTP_HOST} ^stage\.example\.com$
RewriteRule . - [E=REWRITEBASE:/client/project/]

# RewriteBase equivalent - Local / Development
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule . - [E=REWRITEBASE:/client/project/website/v1/]

# Rewriting
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?page=$1 [L]
Enlaces de referencia:
Te podría interesar
Tecnología

Tutorial Básico de Git

Git es un sistema de control de versiones descentralizado, a diferencia de SVN que almacena el repositorio en un servidor centralizado, Git crea una copia del repositorio cada vez que alguien descarga el repositorio.

Leer Más >>
Tips

Repositorios Online

El desarrollo de un proyecto de forma colaborativa requiere la implementación de ciertas herramientas que ayuden al equipo a llevar a cabo las tareas de formas más eficiente, como por ejemplo, un repositorio de código fuente.

Leer Más >>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *