it-swarm-es.com

Reglas de reescritura de Apache para estación de trabajo y servidor de desarrollo

Tengo desarrolladores que editan páginas para varios sitios en una pila WAMP y luego las suben a los servidores públicos que ejecutan pilas LAMP. Estamos bastante contentos con él, pero tenemos esta pequeña molestia: no podemos usar los mismos archivos .htaccess en los entornos de desarrollo y producción. En los sitios públicos, la carpeta de origen se asigna a http://foo.com, http://bar.com, y así sucesivamente. En la estación de trabajo del desarrollador, las carpetas de origen se asignan a http://localhost/foo, http://localhost/bar, y así sucesivamente. Eso significa que necesito RewriteBase / para los servidores públicos, mientras que cada sitio en la estación de trabajo del desarrollador usa RewriteBase /foo/, RewriteBase /bar/, o lo que sea.

¿Hay alguna forma de especificar RewriteBase en relación con el archivo .htaccess? ¿Alguna otra idea sobre cómo hacer que mis reglas de reescritura sean más portátiles?

Si tiene curiosidad, estoy usando reglas de reescritura para redirigir al código de enrutamiento CakePHP, por lo que la regla se ve así:

RewriteRule ^(.*)$ cake_main.php?url=$1 [QSA,L]

Si no utilizo una RewriteBase de /foo/ en la estación de trabajo del desarrollador, se reescribirá a /cake_main.php en lugar de /foo/cake_main.php.

7
Don Kirkby

Mi solución a esto no ha sido meterme con las reglas de reescritura, sino agregar dominios/hosts locales separados con TLD falsos a mi PC.

Puede hacerlo editando el archivo C:\Windows\System32\drivers\etc\hosts

Tenga en cuenta que en Windows 7 (y quizás en Vista) que para editar con éxito este archivo necesita ejecutar su editor de texto como Administrador.

Puede agregar hosts usando líneas que se ven así:

127.0.0.2       www.mysite.local
127.0.0.3       www.myothersite.local

Una vez que estén en su lugar, puede configurar Apache para estos nombres de dominio y estará listo para comenzar.

Por supuesto, esto no funciona para probar bien desde otras máquinas en la red local, pero si se encuentra en esa situación, puede ser mejor usar un servidor DNS local o asignar los hosts a direcciones IP no portátiles locales y sincronice los archivos en todas las PC.

4
JasonBirch