Bonjour,
Je voudrais rediriger les URL de type http://localhost/monsite/XXX/ vers http://localhost/monsite/index.php?url=XXX
J'ai trouvé plusieurs exemples qui proposent d'utiliser une condition sur REQUEST_FILENAME mais apparemment ça ne fonctionne pas.
Je m'explique.
Voici mon arborescence
1 2 3 4 5 6 7 8 9 10 11
|
/monsite
/modules
/public
/css
/images
/js
index.php
.htaccess
/templates
/tmp |
/monsite se trouve ici D:\Mes Documents\Mes Projets\PHP\monsite
J'utilise WampServer 2.0
Je créer donc un alias vers D:\Mes Documents\Mes Projets\PHP\monsite\public\ avec l'utilitaire de wamp.
Il me créer ce fichier
1 2 3 4 5 6 7 8
| Alias /monsite/ "D:/Mes Documents/Mes Projets/PHP/monsite/public/"
<Directory "D:/Mes Documents/Mes Projets/PHP/monsite/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory> |
J'accède donc a mon site via http://localhost/monsite/index.php
J'active rewrite_module dans wamp et je créer un fichier .htaccess avec le contenu suivant :
1 2 3 4 5 6
| <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /monsite/index.php?url=$1 [QSA,L]
</IfModule> |
Si j'appelle l'url http://localhost/monsite/ tout se passe bien.
Pour l'url http://localhost/monsite/XXX/ ça m'affiche la bonne page mais aucun templates, scripts js ou css ne sont utilisés (idem pour http://localhost/monsite/XXX/YYY/ZZZ/) .
J'ai donc vérifié ce que contenait REQUEST_FILENAME comme ça
RewriteRule ^(.*)$ /monsite/index.php?url=$1&f=%{REQUEST_FILENAME} [QSA,L]
ce qui donne
1 2 3 4 5
| Array
(
[url] => XXX/
[f] => D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX
) |
De plus même si je demande http://localhost/monsite/XXX/YYY/ZZZ/, REQUEST_FILENAME sera toujours égale à D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX
En gros quand ma page demande le fichier css/style.css apache vérifie dans D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX/css/style.css. Ce qui fait que les conditions seront forcement vraies et qu'il redirigera toutes les urls des fichiers et qu'il ne les trouvera pas.
Si quelqu'un peut m'aider à comprendre et régler mon problème, je suis preneur.
Partager