2010-05-21 7 views
2

Je possède ce regex qui permettent à tous les fichiers php:Regex pour permettre à tous les fichiers php sauf un

^.*\.([Pp][Hh][Pp]) 

comment puis-je exclure un fichier spécifique, par exemple test.php?

Merci pour votre réponse, Cordialement

[modifier] J'omettent de dire qu'il est un reg à partir d'un fichier htaccess, le/i ne semble pas fonctionner, et? ni. [Edit2] le but est d'accorder l'accès aux utilisateurs authentifiés, à l'exception d'un fichier qui doit être autorisé pour tout le monde. Je l'ai fait:

<Files ~ "^.*\.([Pp][Hh][Pp])$"> 
AuthUserFile /directory/.htpasswd 
AuthGroupFile /dev/null 
AuthName "Please log in ..." 
AuthType Basic 
require valid-user 
</Files> 

Ainsi, tous les fichiers php require utilisateur valide. Je voudrais ajouter une exception pour un fichier spécifique, dit test.php

+1

au lieu de [Pp], vous pouvez utiliser un insensible à la casse p. Il va raccourcir l'expression rationnelle à '/^.* \. (Php)/i' – Amarghosh

+0

Est-ce une question de mod-rewrite? Pouvez-vous poster a) ce que vous essayez de réaliser et b) votre code pour ce que vous avez essayé jusqu'ici. –

+0

c'est tout, merci d'avance pour votre réponse – Tim

Répondre

5

Vous pouvez utiliser un negative lookahead:

^(?!test\.php$).*\.([Pp][Hh][Pp])$ 

Il pourrait être préférable d'utiliser une expression régulière insensible à la casse au lieu d'écrire des choses comme [Pp] pour chaque lettre.

"/^(?!test\.php$).*\.php$/i" 
+0

merci pour votre réponse, mais je omets de dire que c'est un reg à partir d'un fichier htaccess, le/i doesn Ça ne semble pas fonctionner, et le? ni. Y a-t-il un autre moyen d'écrire ceci? – Tim

0

Ne serait-il pas préférable d'implémenter une vérification non-regex dans ce cas?

UPD:

juste ajouter la deuxième directive pour le fichier exclu comme celui-ci:

<Files "test.php"> 
Satisfy Any 
Allow from all 
</Files> 

Cela accorde test.php être disponible pour tous les utilisateurs.

+0

peut-être, comment feriez-vous cela? – Tim

+0

Vous devez ajouter deuxième directive comme ceci: \ n Satisfy Any \ n Permettre de tous \ n \ n par ce test.php sera disponible pour tous. –

Questions connexes