[URL Rewriting] Réécriture en fonction de la langue

Nouveau WRInaute
Bonjour a tous

J'essaye "desesperement" de faire marcher ces |#\^`#~ de redirections et a priori je suis loin d'avoir tout compris à l'url rewriting.

Ce que je veux :
Lorsqu'un utilisateur tappe :

1) http://www.monsite.com il est redirigé vers http://www.monsite.com/fr/index.html
2) http://www.monsite.com/fr ou http://www.monsite.com/fr/ il est redirigé vers http://www.monsite.com/fr/index.html
2bis) http://www.monsite.com/en ou http://www.monsite.com/en/ il est redirigé vers http://www.monsite.com/en/index.html
3) http://www.monsite.com/test.html il est redirigé vers http://www.monsite.com/fr/test.html

Les points 1) et 2) ont l'air de marcher correctement ...
Mais pour le 3, il n'est redirigé nul part (et ca affiche donc http://www.monsite.com/test.html).
Et pour le 2bis j'arrive pas à récupérer le "/fr/" ou le "/en/" dans l'URL.

RewriteRule ^(fr|en)$ $1/ [R]

RewriteCond %{HTTP_HOST} ^www.monsite.com$
RewriteCond %{REQUEST_URI} ^/(?!fr|en)$
RewriteRule ^(.*)$ /fr/index.html [R=301]

RewriteCond %{HTTP_HOST} ^www.monsite.com$
RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)$ /fr/index.html [R=301]

Dans mon esprit :
- regle 1 : si il n'a pas mis de / apres http://www.monsite.com/fr ou http://www.monsite.com/en alors je le rajoute
- regle 2 : si il n'y a pas de fr ou de en alors je le redirige vers le fr
- regle 3 : si il a ecrit /fr/ ou /en/ pour le moment je le redirige uniquement vers le /fr/ vu que j'arrive pas a le catcher

Peut etre que je me suis pris la tete pour rien et que ya une solution "simple" ...
En attente d'une aide précieuse :roll:
 
WRInaute passionné
si "/en" et "/fr" sont des répertoires physiques la redirection est normalement automatique de "/en" vers "/en/"

je te conseille de rediriger /rep/index.html vers /rep/ (c'est plus propre) :

Code:
#redirige /index.html vers /
RewriteRule ^(.*)index\.html$ $1 [R=301]
#redirige si ce n'est pas un répertoire, un fichier et ne commence pas par /en/ ou /fr/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/(en|fr)/
RewriteRule ^(.*)$ /fr/$1 [R=301]
 
Nouveau WRInaute
Merci beaucoup !

Je connaissais pas :
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

et en effet ca fonctionne tout de suite beacoup mieux maintenat :)
 
WRInaute discret
bonjour

j'ai quelquechose de similaire à faire sur www.monsite.fr

JE soujhaiterais que

1. www.monsite.eu/ aille vers www.monsite.eu/index.php?lang=es
2. Mais il faudrait aussi que www.monsite.es/page.php?cat=2 renvoie vers www.monsite.es/page.php?cat=2&lang=spanish

Pouvez vous m'aidez svp ?

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.monsite.es$
RewriteRule ^(.*)$ /index.php?lang=spanish [R=301]

Mais dans le cas 2, bien sur ça redirige sur le .fr, ce que je ne souhaite pas ( www.monsite.fr/index.php?lang=spanish )

merci
 
Discussions similaires
Haut