2011-01-30 10 views
8

Tengo dos directorios en mi raíz: /dev y /live.htaccess RewriteBase

Todo el contenido dentro de estos directorios tiene rutas relativas como /css/style.css o /js/home.js.

Quiero poder cambiar el directorio raíz usando htaccess para que las rutas relativas se conviertan en /live/css/style.css etc. o /dev/css/style.css dependiendo de la versión del sitio que estaba usando.

He intentado usar el código siguiente en .htaccess ubicado dentro del directorio de /live:

RewriteEngine on 
RewriteBase /live/ 

También he intentado usar RewriteBase /public_html/live/.

Pero, las rutas de contenido siguen siendo http://domain.com/css/style.css en lugar de http://domain.com/live/css/style.css cuando veo el sitio.

¿Alguien tiene alguna idea?

Gracias.

EDITAR >> sentimos que debería explicar que mi htaccess raíz tiene las siguientes reglas que apuntan hacia los dos directorios:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] 
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC] 
RewriteRule ^((www\.)?([a-z]+)\.)domain\.us$ /live/index.php?tag=%3 [L,P] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] 
RewriteCond %{HTTP_HOST} ^dev.((www\.)?([a-z]+)\.)domain\.com [NC] 
RewriteRule ^((www\.)?([a-z]+)\.)domain\.us$ /live/index.php?tag=%3 [L,P] 
+0

Esto es para cambiar entre un sitio de producción y desarrollo, ¿correcto? ¿Es el ejemplo 'http: // domain.com/live/css/style.css' apenas explicativo, o desea que las URL externas reflejen qué sitio está activo? Si esto último, ¿por qué? – outis

+0

Sí, para poder cambiar entre los dos y mantener las rutas de archivo relativas. – Kit

+0

Una ruta que comienza con "/" es absoluta, no relativa. ¿Cuál es el problema con el uso de una regla de reescritura? – outis

Respuesta

10

RewriteBase te permitirá resolver los problemas con la forma en direcciones URL se traducen a presentar sendas y viceversa. No es para lo que lo estás usando. Use un estándar RewriteRule

RewriteCond %{REQUEST_URI} !^/live 
RewriteRule ^(/?)(.*) /live/$2 
+0

Gracias por la respuesta. ¿Puedo usar RewriteBase para cambiar las rutas de archivo relativas como /css/style.css a /live/css/style.css? – Kit

+0

Como ya he dicho, no es para lo que usted quiere. 'RewriteBase' es para mapear rutas URL y rutas de archivos en etapas específicas del procesamiento de solicitudes Apache. Lea la documentación (que está vinculada a arriba). – outis

Cuestiones relacionadas