2010-04-07 8 views
0

J'ai un serveur où je ne peux configurer httpd en utilisant .htaccess, une configuration globale ne peut pas accéder. Je veux réécrire presque tous les chemins non-existants à index.php, donc je l'ai fait quelque chose comme:.htaccess problème stupide

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] 

Et c'est ok. Mais une autre chose que je veux faire est d'empêcher l'accès au chemin où je garde les fichiers PHP (je ne peux pas les stocker ailleurs) qui est par exemple/php. Je voudrais que tout en commençant par/php récrit à index.php path = php ... donc je l'ai fait quelque chose comme:

RewriteCond %{REQUEST_URI} ^/php.* 
RewriteRule ^(.*)$ /index.php?path=$1 [L,QSA] 

Et ce serait aussi bien fonctionner si j'avais accès à la configuration globale. Dans le cas d'une configuration par répertoire, quand j'accède à/php, il le réécrit à index.php? Path = php et remplace le nom du répertoire par: /php/index.php?path=php. Je lis la documentation et je me rends compte qu'elle utilise des redirections internes lorsque la confoguration par répertoire est utilisée. Comment puis-je éviter ce comportement?

Répondre

0

Vous pouvez utiliser Deny from all au lieu de mod_rewrite, mais si vous le voulez vraiment, vous pouvez forcer les redirections externes noteed dans les mod_rewrite docs:

Si une chaîne de substitution commence par http: //, puis le préfixe de répertoire ne sera pas ajouté

+0

Le résultat est OK mais je souhaite éviter les redirections externes. Aussi, je vais plutôt utiliser le refus de toute option, mais je voulais le cacher du monde extérieur, pas seulement l'interdire. Thnx – justnoone

+0

Vous pouvez essayer 'RewriteBase', même si je ne sais toujours pas à quoi cela peut servir. – wRAR

+0

J'ai essayé aussi, mais il semble qu'il utilise cela avant de réécrire, lors du test de l'URL et il ajoute le préfixe après ... – justnoone