正则表达式允许除一个以外的所有php文件

时间:2010-05-21 09:25:46

标签: regex .htaccess

我有这个正则表达式,允许所有的PHP文件:

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

如何排除特定文件,例如test.php?

感谢您的回答, 最好的问候

[编辑] 我省略说它是来自htaccess文件的reg,/ i似乎不起作用,而且?都不是。 [EDIT2] 目的是授予对经过身份验证的用户的访问权限,但必须允许每个人使用的文件除外。 所以我做完了:

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

因此,所有php文件都需要有效用户。 我想为特定文件添加一个例外,test.php

2 个答案:

答案 0 :(得分:5)

您可以使用negative lookahead

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

最好使用不区分大小写的正则表达式,而不是为每个字母编写[Pp]之类的内容。

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

答案 1 :(得分:0)

在这种情况下实施非正则表达式检查不是更好吗?

UPD:

只需添加排除文件的第二个指令,如下所示:

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

这将授予test.php以供所有用户使用。