Apache mod_rewrite agrega una barra diagonal adicional al final de la URL

Apache mod_rewrite agrega una barra diagonal adicional al final de la URL

Estoy ejecutando CentOS 6.0 y estoy intentando hacer que mod_rewrite elimine www de cualquier URL que tenga el prefijo. Aquí está el código que tengo en mi httpd.conf:

NOTA:Estoy usando un VPS con acceso completo a la raíz, por lo que no estoy usando archivos .htaccess ni ninguna configuración "por directorio".

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

Esto funciona bien para todas las páginas excepto que la URL se escribirá enhttp://aaronjwood.com//(observe las dos barras) ohttp://aaronjwood.com//contact.php. ¿Alguien puede ayudarme a descubrir por qué sucede esto?

Respuesta1

Dado que está en su archivo de configuración principal, y no por directorio ( <Directory>o .htaccess), la barra diagonal inicial no se elimina por contexto. En realidad, está agregando (o intentando agregar; no estoy seguro si Apache está eliminando el extra en la mayoría de los casos, o si el navegador del cliente lo está) la segunda barra en cada reescritura.

Solo tenga en cuenta el hecho de que la barra diagonal inicial está incluida en la cadena que está haciendo coincidir:

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

Respuesta2

Como está directamente en un vhost, aquí está la solución: elimine la barra aquí:http://aaronjwood.com$1

Otro consejo: cuando está solo, ^(.*)$es lo mismo que (.*).

Así que aquí está la solución:

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

Por favor dime si funcionó.

olivier

información relacionada