2010-04-12 14 views
7

Tengo un .htaccess redirigir para "no www" como esto:no www redirección .htaccess - ignorar otros subdominios

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

que está trabajando. Pero, también tengo algunos subdominios que no sean www. Si llamo por ejemplo http://shop.example.com me vuelve a dirigir a: http://www.shop.example.com

no quiero escribir los subdominios en el archivo .htaccess, que debería funcionar de forma automática, simplemente ignorar cualquier otra cosa que la www y '' como esto:

if subdomain =='' -> redirect to www.HTTP_HOST.... 
elseif subdomain !='' && subdomain !='www' -> do nothing. 

gracias!

Respuesta

1

probar esto:

Options +FollowSymlinks 

RewriteEngine On 

RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www\.(.*)//((s)on|s.*)$ [NC] 

RewriteRule^http%3://%1%{REQUEST_URI} [L,R=301] 

sólo trató con internetagentur.drupal-webmaster.de (subdominio) - el principal es, sin www.

+0

yo Pero! No lo probé, porque encontré otra solución, a través de php. Acepto tu respuesta de todos modos;) danke. – MilMike

10

Prueba esta regla:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Y también tomar HTTPS en cuenta:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Gracias - como referencia, esta solución funciona para mí servidor no tiene SSL, por lo que no se prueba parte – Alvin

0

Si desea una solución php que podría utilizar algo similar a esto:

define('URL', 'yourdomain.com/'); 

// fix : impose www rule 
if (strpos($_SERVER['SERVER_NAME'], 'www') === false) { 
    header('Location: http://www.'.URL.$_SERVER['REQUEST_URI']); 
    die(); 
} 

Esto también redirigiría a la página solicitada originalmente.

Cuestiones relacionadas