apache filesmatch指令帮助。想要包含“path / to / file”但不能正常工作

时间:2011-01-26 17:11:22

标签: php apache .htaccess

我想阻止直接访问某些选定目录的网址。但是,可以在所选目录中创建一些文件,以便直接访问url。我在写&lt;时遇到了一些麻烦。 filesmatch&gt;允许访问“xml /”目录中的.php文件的部分。我想在filesmatch指令中包含“path”的一部分,而不是创建单独的&lt; directorymatch&gt;每个目录的指令我希望某些文件可用,但它不起作用...如果我删除“/ xml /”并放<FilesMatch "\.(php)$">

在我的httpd.conf中,我设置了一个虚拟目录。在虚拟目录中,我添加了以下内容:

<DirectoryMatch "^/data/servers/dev.site.com/web/administrator/(includes|xml|css|javascript|stylesheet|cache|classes|acco
unt_files)">
        AddType application/x-httpd-php .php .html .htm
        Options none
        AllowOverride All
        Order Deny,Allow
        Deny from all


        #Target all files in "xml/" directory that end in ".php"
        <FilesMatch "/xml/\.(php)">
                AddType application/x-httpd-php .php
                Order Allow,Deny
                Allow from all
        </FilesMatch>

</DirectoryMatch>

任何人都知道我应该怎么写这个?

感谢您的帮助。

1 个答案:

答案 0 :(得分:11)

FilesMatch完全依赖于文件名 - 它根本不会查看路径部分,因此您永远不会在FilesMatch块中的文件名中获得'/ xml /'。这就是为什么上面有DirectoryMatch的原因。匹配目录,然后匹配dirmatch中的文件名。