UrlRewriting : réécriture + redirection

Résolu/Fermé
Sushi - 7 juin 2010 à 15:33
 Sushi - 7 juin 2010 à 16:55
Bonjour,

Je souhaite réécrire mes url de la manière suivante :

Pour toutes les url de la forme http://domaine.com/index-en.php
Les réécrire ainsi : http://domaine.com/en/index.php
Et faire pointer la page http://domaine.com/en/index.php sur http://domaine.com/index-en.php

Le but étant d'avoir des url propre sans pour autant changer les liens qui se trouvent déjà sur le site.

Pour le moment j'arrive à la structure suivante :

/www/.htaccess
/www/index-en.php
/www/en/.htaccess

Dans l'htaccess de la racine j'ai le contenu suivant :

RewriteCond %{HTTP_REFERER} !^/en/.*$

RewriteRule ^index-en.php$ /en/index.php [R]


Dans l'htacces du répertoire /en/ j'ai :

RewriteRule ^index.php$ http://test:8888/index-en.php [L]



Vous l'aurez compris mon problème est que j'arrive dans une boucle sans fin et je ne sais pas comment faire pour m'en sortir.

Quelqu'un aurait un avis sur la question ?

Je vous remercie d'avance.

4 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
7 juin 2010 à 15:44
Je n'ai pas très bien compris ton problème.

Qu'est-ce que tu voudrais ?
- On demande "/en/index.php" ; "/index-en.php" s'affiche (donc "/index-en.php" existe réellement)
- On demande "/index-en.php" ; "/en/index.php" s'affiche (donc "/en/index.php" existe réellement)
90
Navré ce n'est effectivement pas très claire.

1) L'utilisateur demande : /index-en.php
2) Le système change l'url (dans le navigateur) par : /en/index.php
3) Le système fait pointer la /en/index.php sur /index-en.php (qui est le seul fichier existant) (attention l'url ne change pas dans cet étape)

Le but est d'avoir une URL joliment formée sans avoir à changer les liens du site.

Pour le moment c'est le serpent qui se mord la queue, j'imagine qu'il est possible d'ajouter une condition dans le fichier /www/.htaccess pour éviter ce problème, mais je ne sais pas comment faire.

Merci de t'intéresser à mon cas Avion.
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
7 juin 2010 à 16:11
Essaye avec ça :
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} ^/index-en.php
RewriteRule ^(.*) http://example.com/en/index.php [L,R=301]

RewriteRule ^en/index.php /index-en.php
0
Merci beaucoup de ton aide Avion, je suis arrivé à une solution grâce à toi.

Dans /www/.htaccess on réécrit l'url :
RewriteEngine On
RewriteRule ^en/index.php /index-en.php


Dans /www/en/.htaccess on fait pointer cette url virtuel sur la page effective
RewriteEngine on
RewriteRule ^index.php /index-en.php [L]


Merci de ton aide et meilleures salutations.
0