2010-11-24 18 views
11

Me aplicaron el mod_rewrite regla siguiente en Apache2 para redirigir a no www a www:mod_rewrite y doble barra cuestión

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

Tengo dos preguntas:

1) Hay un problema de doble barra:

¿Algún consejo para solucionarlo?

2) ¿Mi configuración es buena para SEO?

+0

¿Dónde está ubicado? – Gumbo

Respuesta

30

fija a:

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

porque $1 por defecto contiene la ruta del índice /

4

En realidad, siempre tendrá barras dobles debido a

RewriteRule ^(.*)$ http://www.mydomain.com/ $1 [R=301,L]

combinado con el hecho de que REQUEST_URI (de que coinciden en) normalmente contiene una barra de inicio. Lo que puede intentar es RewriteRule ^(.*)$ http://mydomain.com $1, y luego envíe una solicitud HTTP quebrada GET foo HTTP/1.0 y vea si Apache se ocupa de ella correctamente.

1

Eso se debe a que la ruta raíz es /, y está anexando lo que se obtiene en RewriteRule (el primer caso funciona bien porque no coincide con la condición de modo no se realiza ninguna reescritura).

Usted puede intentar algo como esto:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC] 
# for the home page 
RewriteRule ^/$ http://www.mydomain.com/ [R=301,L] 
# for the rest of pages 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L] 
15
 
RewriteRule ^\/?(.*)$ http://www.mydomain.com/$1 [R=301,L] 
+0

este funciona muy bien gracias – Pere

+0

En mi humilde opinión, esta solución debe ser preferida en relación con la aceptada, ya que omitir el principio/del partido es más claro que omitir la reescritura. – h7r

1

poner una barra en su patrón debería resolver este problema:

RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]