UrlRewriting : réécriture + redirection

Résolu
Sushi -  
 Sushi -
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

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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
  2. Sushi
     
    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
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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
  4. Sushi
     
    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