2012-02-15 12 views
5

Estoy tratando de publicar archivos CSS para mi sitio desde un dominio diferente.Apache .htaccess: ¿Sirve archivos .css desde un dominio separado?

Tengo la siguiente entrada en .htaccess de mi sitio (en la raíz del documento):

RewriteRule ^templates/*\.css$ http://css.mysite.com/templates/$1 [R=301,L] 

Con la intención de limitarse a juego:

http://www.mysite.com/templates/default/styles/main.css 

... y enviar un HTTP 301 redirigir a:

http://css.mysite.com/templates/default/styles/main.css 

Pero lo que realmente está siendo llamado es:

http://css.mysite.com/templates/.css 

(me gustaría duplicar el anterior para *.js y servirlos de js.mysite.com y todas & archivos JPG PNG y servirlos de img.mysite.com.)

Cualquier ideas serían fantástico. Debo admitir que las reglas de reescritura de htaccess siempre parecen eludirme.

+1

Sólo para asegurarse, que no tienen un camino sólo a petición * * el css directamente de la otra URL, ¿verdad? Es decir, ¿cambia las páginas para hacer la solicitud directamente en lugar de hacer una redirección? – Andrew

+0

Estoy tratando de mantener el sitio tan portátil como sea posible. Me doy cuenta de que recibiré un golpe con la redirección 301, pero manteniendo las cosas en el archivo .htaccess, si alguna vez necesito mover el sitio a un nuevo dominio o servidores para fines de recuperación de desastres simplemente eliminando las líneas del .htaccess el archivo revertiría todo a ser servido localmente. Al menos, esa es mi idea. :-) De esta manera puedo anular el CSS sin editar internamente ninguno de los archivos CSS. El sitio se cerrará con fuerza cuando se active. – gellenburg

Respuesta

7

Prueba esto y quiero saber:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^css\. 
RewriteRule ^templates/(.*)\.css$ http://css.mysite.com/templates/$1.css [R=301,L] 

o un "modo dinámico" más

RewriteCond %{HTTP_HOST} ^(www\.)?mysite 
RewriteRule ^templates/(.*)\.(js|css)$ http://$2.mysite.com/templates/$1.$2 [R=301,L] 
RewriteRule ^templates/(.*)\.(jpg|gif|swf|jpeg|png)$ http://imgs.mysite.com/templates/$1.$2 [R=301,L] 

Éste comprobará JS y CSS y utilizar el subdominio basado en la extensión del archivo: por lo que .js irá a js.mysite.com y .css irá a css.mysite.com y lo mismo para las imágenes, pero en su lugar va a imgs.mysite.com.

o ser incluso más genérico:

RewriteCond %{HTTP_HOST} ^(www\.)?mysite 
RewriteRule ^templates/(.*)$ http://media.mysite.com/templates/$1 [R=301,L] 

redirigiendo todo lo que se inicia con templates

+0

Interesante. Creo que podría crear jpg.mysite.com, css.mysite.com, js.mysite.com, png.mysite.com y gif.mysite.com. ¡Habla sobre la paralelización de las conexiones http! :-) Creo que eso sería demasiado problema. Sin embargo, probé tu primer ejemplo y parece que todo lo que se encuentra en "plantillas" se redirige al subdominio (no solo a la extensión css). :/ – gellenburg

+0

Estoy de acuerdo, puedes crear un "medio" como: media.mysite.com y redirigir todo lo que hay allí también - Actualicé mi respuesta –

+0

@gellenburg, parece *** muy extraño *** que todo se está redirigiendo a ' css.mysite.com' si ha escrito correctamente el ejemplo 1 de BOZ. Esta regla solo se activará para 'GET/templates/*. Css'. Utilice el regexpChecker.php y tenga en cuenta las trampas 301 en este hilo: [Consejos para depurar reglas de reescritura .htaccess] (http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules) – TerryE

Cuestiones relacionadas