2009-07-29 2 views
2

J'utilise mod rewrite pour accéder indirectement à mes fichiers PHP dans le répertoire racine de mon site. À l'heure actuelle, j'ai quelque chose comme ça,Comment puis-je faire. Htaccess travail sur le répertoire en cours et pas de sous-répertoires?

RewriteRule ^(blog|about|page3|etc)$ /$1.php [L] 

Mais ce que je voudrais utiliser est

RewriteRule ^(.*)$ /$1.php [L] 

Alors que je ne voudrais pas mettre à jour mon fichier .htaccess chaque fois que je veux ajouter une nouvelle page à mon site Web. Le problème avec ceci est que cela affecte aussi mes sous-répertoires. Ce qui rend CSS, javascript, images inaccessibles car il redirige vers "/dir/example.png.php".

Alors quelle est la meilleure solution ici?

Répondre

3

Essayez cette règle:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f 
RewriteRule .* $0.php [L] 
-1

Quelque chose comme ceci (notez le!):

RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php 
+0

Cela n'ignorera pas des sous-dossiers – Cfreak

1

que je le ferais avec des filtres pour ignorer les sous-répertoires. De cette façon, vous n'avez qu'à le changer si vous ajoutez un sous-dossier. Vous aurez besoin d'ajouter une ligne comme de Sosh si vous avez des images ou d'autres fichiers dans le dossier

Ce qui suit ne tiendrait pas compte des « images » et « js » sous-dossiers et tout autre rediriger

RewriteRule ^images* - [L] 
RewriteRule ^js*  - [L] 
RewriteRule ^(.*)$  /$1.php [L] 
2

Modifier le .htaccess à ceci:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /$1.php [L] 

Après le démarrage du moteur de réécriture, il va d'abord vérifier si le fichier est un fichier réel sur le système, ou si elle est en fait un répertoire. Si ce n'est pas le cas, la règle sera exécutée. Dans ce cas, essayez de trouver le fichier en ajoutant .php et en le servant.

Les sous-répertoires, les images, CSS et autres seront très bien, car ils vont sortir de la réécriture une fois qu'ils sont trouvés.

+0

problème avec celui-ci est si il me donne une erreur de serveur chaque fois que le fichier est pas là. – fent

+0

Ce n'est pas bien alors. Mettra à jour s'il y a un autre moyen que celui suggéré par Gumbo. – random