2009-08-06 9 views
1

Pour mon site, j'ai une RewriteRule qui pointe l'URL http://www.mysite.com/work vers un fichier work.php. J'ai aussi un répertoire appelé "work" qui contient des fichiers, comme project1.php, project2.php, etc ....htaccess réécrire l'url en page ou en répertoire

Quelles règles devrais-je écrire pour que l'URL http://www.mysite.com/work sache aller au travail Fichier .php, mais l'URL http://www.mysite.com/work/project1 sait que je veux dire aller dans le répertoire "travail" et afficher le fichier project1.php?

EDIT: Faut-il rappeler, c'est ce que je travaille actuellement avec:

RewriteEngine On 
RewriteBase /beta/ 
RewriteRule ^([a-z]+)$ $1.php [L] 

Des conseils supplémentaires pour améliorer cette sécurité sage? (Arrêter le saut à l'annuaire, etc ...)

Répondre

4

Essayez ceci:

RewriteEngin On 
RewriteBase/
RewriteRule ^work$ /work.php [QSA,L] 

qui assurera que http://www.mysite.com/work (pas slash) ira à votre fichier work.php.

Si vous souhaitez également http://www.mysite.com/work/ (avec barre oblique), entrez work.php, ajoutez cette ligne juste au-dessus de la dernière RewriteRule.

RewriteRule ^work/$ /work [R=301,QSA,L] 

qui lui rediriger vers l'URL sans slash ainsi, afficher le fichier work.php.

MISE À JOUR: Puisque vous avez déjà une directive RewriteBase, il suffit de mettre la la règle juste après votre RewriteBase ligne RewriteRule (s) mais avant votre RewriteRule vous utilisez un fourre-tout et va tout correspondre.

+0

Vous avez répondu avant que j'inclus mon fichier .htaccess actuel, ne semble pas fonctionner si je viens d'ajouter vos trucs dans. Probablement quelque chose à voir avec ce que j'ai actuellement? – roflwaffle

+0

@Brandon, j'ai mis à jour ma réponse pour correspondre à votre révision. – matpie

-1

Essayez cette règle:

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .* $0.php [L] 
+0

Quel est le problème? – Gumbo

+0

Je ne suis pas celui qui l'a voté, mais je suppose que la raison en est que votre règle est trop agressive et qu'elle va correspondre à n'importe quel fichier existant et pas seulement '/ work', ce que OP voulait. – matpie

0

Ceci est la réponse à votre question. Ça marche pour moi.

RewriteEngine On 
RewriteBase/
RewriteRule ^([a-z]+)$ $1.php [L] 

Retirez simplement beta/

Questions connexes