Probleme d'url rewriting

Nouveau WRInaute
Bonjour.

Je travaille actuellement sur un site web permettant le multilingue. Pour construire les pages (dans le fichier index) nous utilisons donc 2 variables : une variable pour la langue, et une pour la page (nommée p) qui permet de déterminer le contenu de la page.

Par exemple, ma page d'accueil en francais est accédée via : www.monsite.com/index.php?p=home&langue=fr; ma page 'rooms' en anglais est disponible à www.monsite.com/index.php?p=rooms&langue=en.

Je veux faire une redirection pour que les utilisateurs puissent accéder aux pages via des urls du type:
www.monsite.com/home/fr ou www.monsite.com/rooms/en.

J'ai donc mis en place un fichier htaccess:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ([_a-z0-9]*)/([_a-z0-9]*)$ /index.php?p=$1&langue=$2
RewriteCond %{HTTP_HOST} !^www\.monsite\.com [NC]
RewriteRule (.*) http://www.monsite.com/$1 [QSA,R=301]

Je n'ai pas d'erreur lorsque j'essaie d'accéder aux pages, mais quelque que soit l'url (www.monsite.com/home/fr ou www.monsite.com/rooms/en par exemple), je tombe invariablement sur ma page d'accueil en francais. Le contenu de mes deux variables n'est donc pas transmis (enfin je crois...).

Quelqu'un voit-il un souci dans mon htaccess??

Merci beaucoup!
 
WRInaute discret
wetzlers a dit:
J'ai donc mis en place un fichier htaccess:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ([_a-z0-9]*)/([_a-z0-9]*)$ /index.php?p=$1&langue=$2
RewriteCond %{HTTP_HOST} !^www\.monsite\.com [NC]
RewriteRule (.*) http://www.monsite.com/$1 [QSA,R=301]

Quelqu'un voit-il un souci dans mon htaccess??

Merci beaucoup!

Bonjour,

a froid comme ça, sans trop chercher, le regex étant parfois exotique, je suspecte cette ligne :

RewriteRule (.*) http://www.monsite.com/$1 [QSA,R=301] <== retire la pour voir et/ou fait une règle rewrite moins générique, plus ciblé quoi. C'est juste pour tester.

Peux-tu donner l'adresse de ton site STP que je regarde.
 
Nouveau WRInaute
Bonjour,

Merci de ta réponse rapide. J'ai essayé ta proposition, cela ne semble pas faire de différence.

Le site est : http://www.apple-guesthouse-sihanoukville.com/

Le .htaccess en place actuellement est :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ([_a-z0-9]*)/([_a-z0-9]*)$ /index.php?p=$1&langue=$2
#RewriteCond %{HTTP_HOST} !^www\.apple-guesthouse-sihanoukville\.com [NC]
#RewriteRule (.*) http://www.apple-guesthouse-sihanoukville.com/$1 [QSA,R=301]


Tu peux constater qu'en accédant à http://www.apple-guesthouse-sihanoukville.com/index.php?p=home&langue=fr, tu as la page d’accueil en français, si tu mets 'en' en paramètre de langue, tu passes en anglais, si tu mets 'about' (par exemple) en paramètre de page, tu bascules vers la page 'about'.

Or si tu vas sur http://www.apple-guesthouse-sihanoukville.com/home/en (ou une autre adresse de ce type), les paramètres ne semblent pas être transmis (quelque soit la page on reste sur home en français).

NB. Je n'ai pas réaliser le site, j'y ai seulement intégrer le multilingue. Le site est réalisé avec un framework CodeIgniter. Le fichier index appelé est donc un truc bizarre qui appelle plein d'autres trucs à son tour. Peut-être une piste...
 
WRInaute discret
Teste avec cette ligne pour voir (j'ai juste changé quelques détails, car la réécriture fonctionne avec tes règles, mais pas la récupération des variables blablabla ^^ donc c'est normal pas de problème ;) :

Code:
RewriteRule ^([a-z]+)/([a-z]+)$ /index.php?p=$1&langue=$2 [L]


ou celle-ci :

Code:
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?p=$1&langue=$2 [L]
 
Nouveau WRInaute
Bonjour,

D'abord merci. J'ai testé les deux lignes, j'obtiens exactement le même fonctionnement. Le code présent actuellement sur le serveur:

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?p=$1&langue=$2 [L]

Et voilà ce que j'obtiens comme erreur sur mon hébergeur:

File does not exist: /home/apple740/public_html/about, referer: http://www.apple-guesthouse-sihanoukville.com/about/en

Du coup je suis plus sur si le rewriterule marche puisqu'il a bien l'air d'essayer d'accéder aux dossiers /about/en...
 
Nouveau WRInaute
Et chose encore plus surprenante, quand j'essaie d'accéder à http://www.apple-guesthouse-sihanoukville.com/home/en, j'ai ma page d'accueil en francais (le parametre de langue ne passe pas) et en plus, l'image de la zone droite est inaccessible...
 
WRInaute discret
Bon, tu vas, à mon avis gagner plus de temps avec cette méthode :mrgreen: car je suis trop têtu et comme je connais pas CodeIgniter et que la réécriture d'url c'est très simple à faire, mais chiant quand on connait pas tous les styles des programmeurs :

Tape ça sur google : url rewriting CodeIgniter

ça à l'air bien fourni ! tu mettras ici ta réussite pour clôturer en beauté ^^ :wink:

sinon, just pour le fun et satisfaire ma maladie de vouloir tout résoudre :


wetzlers a dit:
Et chose encore plus surprenante, quand j'essaie d'accéder à http://www.apple-guesthouse-sihanoukville.com/home/en, j'ai ma page d'accueil en francais (le parametre de langue ne passe pas) et en plus, l'image de la zone droite est inaccessible...

pour l'image c'est normal, des que tu passes sur un répertoire, tu y restes :

http://www.apple-guesthouse-sihanoukville.com/about/img/view/guest-hou ... kville.png

c'est chiant ton problème, surtout que c'est encore un truc tout simple à faire. Ne connaissant pas cette manière de faire, je vais pas te faire toucher plus, teste ça, et si ça va toujours pas Tape ça sur google : url rewriting CodeIgniter

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.apple-guesthouse-sihanoukville\.com [NC]
RewriteRule (.*) http://www.apple-guesthouse-sihanoukville.com/$1 [QSA,R=301]
RewriteRule ^([a-z]+)/([a-z]+)$ /index.php?p=$1&langue=$2 [L]

ou ça :


Code:
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.apple-guesthouse-sihanoukville\.com [NC]
RewriteRule (.*) http://www.apple-guesthouse-sihanoukville.com/$1 [QSA,R=301]
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?p=$1&langue=$2 [L]
 
Discussions similaires
Haut