Je cours wamp
sur Vista (Apache v2.2.11) et ai des projets d'installation tels que http://localhost/projectx
est le répertoire de base pour projectx
. Maintenant, je veux que les demandes deApache réécriture pour ajouter un répertoire à REQUEST_URI ne fonctionne pas sur localhost exécutant wamp
http://localhost/projectx/somepage/extra
réécrira à
http://localhost/projectx/PUBLIC/somepage/extra
À cette fin, j'ai un fichier dans C:\wamp\www\projectx\.htacces
qui est ce simple:
RewriteEngine On
RewriteBase /projectx
RewriteCond %{REQUEST_URI} !^/PUBLIC
RewriteRule ^(.*)$ /PUBLIC$1 [L]
Je ne peux pas pour la vie de moi comprendre pourquoi cela ne fonctionne pas. L'erreur que j'obtiens est "L'URL demandée/PUBLIC n'a pas été trouvée sur ce serveur". Merci.
MISE À JOUR 25-MAR-2010:
Selon la solution de Michael I enlevé le chemin absolu. Pour une raison quelconque, je aussi besoin d'ajouter une barre oblique finale à la cond et la règle:
RewriteEngine On
RewriteBase /projectx
RewriteCond %{REQUEST_URI} !^/PUBLIC/
RewriteRule ^(.*)$ PUBLIC/$1 [L]
Vous fixe (presque) fonctionne. Je suis un peu confus cependant, la première partie '^ (. *) $' Correspond à l'URI, mais la seconde partie avec un '/' à l'avant fait du remplacement un chemin absolu? Comment cela se rapporte alors à 'RewriteBase' quand il retourne le chemin de l'URI à son formulaire de pré-base? En outre, je n'obtiens aucune erreur pour '/ localhost/projectx /' et la page est transmise à '/ localhost/projectx/PUBLIC /', mais quand j'essaie '/ localhost/projectx/extra /' j'obtiens une erreur interne du serveur 500. Merci. –
La base de réécriture est la base de votre expression régulière, mais le fichier de destination final pourrait se trouver dans un répertoire distinct, donc son chemin est relatif à l'emplacement du fichier .htaccess. – Michael
Merci. Cela fait tellement plus de sens maintenant. De plus, votre solution fonctionne avec une addition mineure (voir la publication originale). –