Salut a tous,
je m'essaie a la création d'un site multilingue, mais je rame un peu sur l'url rewriting, je vais m'ouvrir les veines Smiley smile .
comment transformer :
www.monsite.com/montitre?lang=fr
en www.monsite.com/fr/montitre.php

j'ai ça dans mon htaccess mais cela me sors un page blanche qu'en je clique sur mes liens du style
<a href="fr/index.html">FR</a>
.
RewriteRule ^(fr|en)/(.*).html$ $2.php?lang=$1 [QSA]

alors que quand je suis en url www.monsite.com/montitre?lang=fr cela fonctionne parfaitement



Merci d'avance de votre aide.
@+
Salut, tu peux faire comme ça:


RewriteRule ^(fr|en)/(.*)\.html$ $2.php?lang=$1 [L,QSA]


EDIT: il faut bien que $2.php existe par contre, je ne suis pas sûr d'avoir totalement compris ce que tu veux faire par contre, vu tes liens contiennent bien un .html mais pas tes exemples.
Modifié par floreo (31 Jan 2014 - 21:15)
cela ne change rien lorsque je clique sur un lien j'ai une page blanche, pas un page d'erreur.

je te donne un peu plus de code :
index.php

<?
session_start();

if($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
$_SESSION['lang'] = $_GET['lang'];
include('fr.php');  
$langage=$_SESSION['lang'];
}   
elseif ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
$_SESSION['lang'] = $_GET['lang'];
include('en.php');  
$langage=$_SESSION['lang'];
}  
else {                       // si aucune langue n'est déclarée on inclut le fichier fr-lang.php par défaut  
$_SESSION['lang'] = 'fr';
include('fr.php');  
$langage=$_SESSION['lang'];
} 

echo'<br /><a href="fr/index.html">FR</a><br>
<a href="en/index.html">EN</a><br /><br />';

je me trouve dans un répertoire test au passage.
htaccess:

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^(fr|en)/(.*)\.html$ /test/$2.php?lang=$1 [L,QSA]


dans cette exemple $2 c'est le index.php.

j’espère que cela pourra aider

Merci
Modifié par spawns (31 Jan 2014 - 21:47)
Comme ça, ce sera mieux (i.e sans le / devant test):


RewriteRule ^(fr|en)/(.*)\.html$ test/$2.php?lang=$1 [L,QSA]


J'ai testé ça fonctionne, après je ne sais pas si tu es dans un autre répertoire ou autre. Là, dans ce cas ton .htaccess doit se trouver au même niveau que le dossier test.
Modifié par floreo (31 Jan 2014 - 22:39)
bon j'ai supprimer mon dossier test et je fais tout de la racine, c'est plus simple.

par contre dans la page index.php,lorsque que je clique sur FR OU EN cela fonctionne, mais si je veux a nouveau changer de lange ou re-cliquer sur un lange cela ne fonctionne plus car cela ajout un en ou fr en plus dans l'url.

je sais pas si tu as bien suivi mais fais le test tu vas comprendre.
exemple en arrivant sur la page index je clique le lien EN donc lurl ->www.monsite/en/index.html et si je clique ensuite sur FR cela ne fonctionne plus car l'url ->www.monsite/en/fr/index.html

tu vois ce que je veux dire ?

Comment solutionner cela ?
C'est parce que tes liens ne sont "pas bons", dans le html mets /en/index.html au lieu de en/index.html
Exacte un slash oublié et c'est la zone.
En tous cas merci de ton aide.
tu me sors un épine du pied

Encore merci
@+