负正则表达式 - 排除所有PHP脚本,但不包括其中一些

时间:2013-11-19 16:22:46

标签: regex apache

正如标题所说,我想从apache执行中排除所有php文件,但不包括其中一些我知道是“合法”的文件。

我尝试使用[^(file1|file2|file3|...|filen)|(\*)].[(php)|^(\*)],但它似乎只匹配()内文件的最后一个字符
我也尝试过阴性前瞻但没有结果。

有人能指出我正确的方向吗?

编辑:显然我在该表达式下使用Deny from all

1 个答案:

答案 0 :(得分:0)

<Files>允许使用~运算符进行正则表达式,但<FilesMatch>应该是首选:

<FilesMatch '\.php$'>
  Deny from all
</FilesMatch>

<FilesMatch '(file1|file2|file3)\.php$'>
  Allow from all
</FilesMatch>

Official Doc说:

  

也可以使用正则表达式,并添加~   字符。例如:

     

<Files ~ "\.(gif|jpe?g|png)$">

     

#... </Files>

     

将匹配最常见的Internet图形格式。 <FilesMatch>是   但是,首选。