2014-07-21 5 views
1

Je gère un ancien site avec le domaine multiple avec le même nom, google a indexé une ancienne URL avec la structure linguistiqueNe comptez pas une sous-chaîne dans htaccess RewriteRule redirect

http://www.example.com/eng/whatever 

et

http://www.example.it/eng/whatever 

et maintenant je n'utilise plus cette structure, mais je veux faire une redirection vers ma nouvelle structure

http://www.example.it/en/whatever 

donc tout ce qui suit le /fra/ doit être ajouté à la nouvelle structure, à l'exclusion de la sous-chaîne /fra/. Mais cela ne fonctionne pas, j'ai une redirection vers

http://www.example.it/en/eng/whatever 

ce qui est faux! Je ne voulais pas /fra dans l'url de redirection

Dans mon .htaccess j'ai cette

#this will redirect the url with /eng/whatever to www.example.it/en/whatever, regardless from the top level domain 
RewriteRule ^eng\/(.*)$ http://www.example.it/en/$1 [R=301,L] 

#redirect example.com on www.example.it/en/ 
RewriteCond %{HTTP_HOST} ^([^.:]+\.)*example\.(com|pt)?(:[0-9]*)?$ [NC] 
RewriteRule ^(.*)$ http://www.example.it/en/$1 [R=301,L] 

Répondre

1

Essayez de remplacer tout cela avec ceci:

RewriteRule ^eng/(.*) en/$1 [R,L,NE,DPI] 

Si cela fonctionne, vous pouvez changer le R en R=301

Avertissement

Pour le tester, vous devez utiliser un nouveau navigateur. Cela est dû au fait que les navigateurs mettent en cache 301 redirections, de sorte que votre navigateur actuel continue de rediriger vers l'ancienne (mauvaise page) sans même parler à votre serveur et en frappant le nouveau .htaccess - à moins que vous effaciez le cache du navigateur.

+0

Je l'ai testé, ça marche! Je ne connaissais pas le drapeau NE et DPI. très utile, merci! – loru88

+0

OK, je n'ai pas lu les règles, désolé merci pour votre explantaion – loru88