2010-10-22 13 views
0

Je suis aux prises avec des tâches mod_rewrite probablement assez simples.mod_rewrite URIs différentes à un emplacement

C'est la structure du répertoire que j'ai:

  • root \
    • traductions \
      • en \ (contient divers sous-dossiers avec des fichiers, 2 niveaux de profondeur)
      • fr \ (contient divers sous-dossiers avec des fichiers, 2 niveaux de profondeur)

ce que je veux faire est de pointer différents URLS dynamiquement créés à ces endroits spécifiques sans changer l'URL dans la barre d'adresse.

Par exemple:

mydomain.com/one/ 
mydomain.com/two/ 
mydomain.com/three/ 

-> tous lirait le contenu de /root/translations/en/index.php

mydomain.com/one/sub1/sub2/ 
mydomain.com/two/sub1/sub2/ 
mydomain.com/three/sub1/sub2/ 

-> lirait le contenu de /root/translations/fr/sub1/sub2/index.php

mydomain.com/onefr/ 
mydomain.com/twofr/ 
mydomain.com/threefr/ 

-> tous lirait le contenu de /root/translations/fr/index.php

mydomain.com/onefr/sub1/sub2/ 
mydomain.com/twofr/sub1/sub2/ 
mydomain.com/threefr/sub1/sub2/ 

-> lirait le contenu de /root/translations/fr/sub1/sub2/index.php

J'ai essayé quelque chose comme:

RewriteCond %{REQUEST_URI} !\.css$ [NC] 
RewriteRule ^/(one|two|three)/$ /_translations/en/ [L] 

RewriteCond %{REQUEST_URI} !\.css$ [NC] 
RewriteRule ^/(onefr|twofr|threefr)/$ /_translations/fr/ [L] 

et alors qu'il travaille pour la redirection par défaut (par exemple mydomain.com/one/) le moment où je veux aller plus loin, il jette 404.

Des indices?

Répondre

0

Essayez ces règles:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^/(one|two|three)/(.*) /_translations/en/$2 [L] 

RewriteRule ^/(one|two|three)fr/(.*) /_translations/fr/$2 [L] 

La première règle arrêtera toute demande qui peut être mis en correspondance sur un fichier existant à réécrite par une règle suivante. Les deux autres règles sont pour les deux cas que vous avez décrits.

+0

C'est exactement ce dont j'avais besoin! Je vous remercie! – criography