Bonjour,
Je bute depuis plusieurs jours sur un problème que je n'arrive pas à résoudre avec mod_rewrite.
J'ai la structure suivante:
Ce que je veux, c'est que les utilisateurs accèdent à l'application en passant par un des deux accès "virtual", qui vont réécrire les URLs pour requêter dans le dossier "real", tout en ajoutant automatiquement un paramètre à l'URL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | |_ virtual1 | |_ app | |_ .htaccess |_ virtual2 | |_ app | |_ .htaccess |_ real |_ app |_ index.php |_ .htaccess |_ javascript |_ app.js
Le contenu du .htaccess dans le dossier "real/app" route toute requête ne correspondant pas à un fichier vers le fichier index.php.
Voici son contenu :
Finalement voici quelques exemples de réécritures que je souhaite obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L]
Pouvez-vous m'aider à écrire le contenu des fichiers virtual1/app/.htaccess et virtual2/app/.htaccess ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /virtual1/app -> /real/app?p=1 /virtual2/app -> /real/app?p=2 /virtual1/app/whatever -> /real/app/whatever?p=1 /virtual2/app/whatever -> /real/app/whatever?p=2 /virtual1/app/javascript/app.js -> /real/app/javascript/app.js ou /real/app/javascript/app.js?p=1
Merci d'avance.
EDIT :
J'ai une piste, mais limitée :
Avec ça, si je requête /virtual1/app/toto, j'obtiens ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 RewriteEngine On RewriteRule ^(.*) /real/app/$1?p=1 [NC,L,QSA]
Le message "app.js loaded" étant signe que le fichier javascript requis dans index.php a été correctement chargé. Le navigateur a demandé /virtual1/app/javascript/app.js.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $_SERVER array (size=4) 'QUERY_STRING' => string 'p=1' (length=3) 'REQUEST_URI' => string '/virtual1/app/toto' (length=17) 'SCRIPT_NAME' => string '/real/app/index.php' (length=19) 'PHP_SELF' => string '/real/app/index.php' (length=19) $_GET array (size=1) 'p' => string '1' (length=1) app.js loaded
Par contre, si j'essaie avec /virtual1/app/toto/test, j'obtiens ça :
La requête arrive correctement à l'index.php, mais le fichier js n'est pas chargé, car le navigateur demande /virtual1/app/toto/javascript/app.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $_SERVER array (size=4) 'QUERY_STRING' => string 'p=1' (length=3) 'REQUEST_URI' => string '/virtual/app/toto/test' (length=22) 'SCRIPT_NAME' => string '/real/app/index.php' (length=19) 'PHP_SELF' => string '/real/app/index.php' (length=19) $_GET array (size=1) 'p' => string '1' (length=1)
Partager