Je m’excuse d’avance si c’est trop long. Je pense que plus de détails vaut mieux que moins et j’espère ne pas être horriblement décousu 🙂
J’utilise WAMP sur mon ordinateur portable pour le développement local, et j’ai plusieurs fichiers c:/wamp/alias/*
chacun pointant vers un répertoire de travail du projet. J’ai eu une excellente aide mod_rewrite et obtenu
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA]
pour travailler pour changer localhost/.../ih/sub/dir
à localhost/.../index.php/sub/dir
pour les URL qui sont à la fois SEO-friendly et court. [Je ne suis pas allé plus loin, mais je pense que cela fonctionnera aussi bien.] Cependant, pour obtenir tout cela, j’ai dû changer ma racine doc de c:/wamp/www/
to c:/
, ce que je préfère vraiment ne pas faire juste au cas où mon Apache serait piraté et sinon parce que c’est une erreur.
Mon fichier alias de test ressemble à
Alias /testme "c:/var/tmp/wamp-testme/" Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Deny from all Allow from 127.0.0.1 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA]
et l’erreur que j’obtiens en essayant de charger http://localhost/testme/rewrites/ih/sub/path
est
[Thu Jun 30 06:46:13 2011] [error] [client 127.0.0.1] File does not exist: C:/wamp/www/var
avec une correspondance
Not Found The requested URL /var/tmp/wamp-testme/rewrites/index.php/sub/path was not found on this server.
dans le navigateur. Bien sûr, la même configuration dans mon fichier c:/wamp/alias/flying.conf
qui pointe vers le répertoire c:/data/flying/
lance le File does not exist: C:/wamp/www/data
dans le fichier journal des erreurs , etc.
Sooooo … Comment puis-je avoir une règle de réécriture qui transcende les alias sans avoir ma racine de doc dans le répertoire racine de ma machine?
Odd: essayez d’append un indicateur PT
à la règle de réécriture: cela force l’URL réécrite à être renvoyée au moteur de mappage d’URL.
EDIT: essayez de définir RewriteBase
sur le répertoire.