2011-09-21 17 views
10

estoy tratando de forzar www para mi dirección de sitio con .htaccess:mod_rewrite - añadir www

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

Si abro mysite.com esta trabajando bien - que añade www. Se convierte en http://www.mysite.com/index.php.

Pero si abro mysite.com/subpage me redireccionó a http://www.mysite.com/index.php nuevamente, en lugar de http://www.mysite.com/subpage.

Pero si abro http://www.mysite.com/subpage no recibo redirección (que es el comportamiento esperado).

¿Cómo puedo solucionar esto? Me gustaría redirigir todas las solicitudes a mi sitio al subdominio www.

Respuesta

12

El problema está aquí:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

^ especifica el principio de la cadena, mientras que $ especifica el final.

Para que funcione debe tener un comodín seleccionar después de .com o .+.

reiterar lo dicho Alex:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
17

Desde el excelente HTML5 Boilerplate .htaccess:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
6

En realidad, puedo estar de acuerdo con el Sr. Szanto.

Al parecer, el problema no era con el:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

A través de una investigación adicional (a través de Google) me encontré con que esto funcionó muy bien para mí:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 

respuesta del Sr. Szanto, aunque está bien formateado, parece redirigir todas las solicitudes que faltan al 'www' para ser redirigidas con el 'www' adjunto. Este no fue un resultado deseable con la mayoría de los subdominios. El código anterior solo redirige si no hay 'www' Y ningún subdominio antes del nombre de dominio TL.

Espero que esto ayude a los demás.

+0

Me gustó la respuesta anterior más - cualquiera que use subdominios tiene que ser más específico para no agregar www innecesariamente (e incorrectamente). – Debriter

Cuestiones relacionadas