我有这个正则表达式,允许所有的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
答案 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以供所有用户使用。