2010-11-24 6 views
11

I a appliqué la règle mod_rewrite suivante Apache2 pour rediriger de non www www:mod_rewrite et double barre oblique question

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

J'ai deux questions:

1) Il y a un numéro double slash:

Des conseils pour le réparer?

2) Ma configuration est-elle bonne pour le référencement?

+0

Où est-ce situé? – Gumbo

Répondre

30

fixe avec:

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

parce $1 par défaut contient le chemin d'index /

4

En fait, vous aurez toujours des barres obliques doubles en raison de

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

combiné avec le fait que REQUEST_URI (que vous correspondant sur) contient normalement une barre de départ. Ce que vous pouvez essayer est RewriteRule ^(.*)$ http://mydomain.com $1, puis envoyer une requête HTTP brisée GET foo HTTP/1.0 et voir si Apache s'en charge correctement.

1

C'est parce que le chemin racine est /, et vous apposent tout ce que vous obtenez dans RewriteRule (le premier cas, fonctionne très bien, car il ne correspond la condition donc pas rewrite est effectuée).

Vous pouvez essayer quelque chose comme ceci:

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

celui-ci fonctionne très bien grâce – Pere

+0

IMHO cette solution devrait être préférée par rapport à la acceptée, car laisser le leader/du match est plus propre que de laisser de la réécriture. – h7r

1

Mettre une barre oblique dans votre modèle devrait résoudre ce problème:

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