He configurado un par de "alias de dominio" para un sitio web que estoy usando como subdominios sin cookies , por lo que static.domain.com/style.css
sirve el mismo archivo que www.domain.com/style.css
.Restringir alias de subdominio "estáticos" a archivos que no sean HTML, de lo contrario redirigir a "www"
Sin embargo, si alguien intenta acceder a static.domain.com/index.htm
deben ser 301 redirigidos a www.domain.com/index.htm
. Las reglas mod_rewrite
que tengo en el directorio web raíz pensé que funcionarían pero no parecen ser así.
<IfModule mod_rewrite.c>
RewriteEngine On
# "/res/all.20110101.css" => "/res/all.css"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$ $1.$3 [L]
# Except for "static" sub-domains, force "www" when accessed without
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^s-img\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^static\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
# If file requested is HTML, force "www"
<FilesMatch "\.(htm|html|php)$">
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
</FilesMatch>
</IfModule>
Solo para aclarar sus reglas: los archivos como '/ res/all.20110101.css' * no * existen y el número es solo para el almacenamiento en caché, ¿correcto? – nickgrim
@nickgrim: Correcto, esa regla es para nombres de archivos flexibles, por lo que el almacenamiento en memoria caché es más confiable que el uso de cadenas de consulta. http://j.mp/qs-cb – Marcel