Помощь директивы apache filesmatch. Хотите включить "путь / файл / файл", но не работает правильно - PullRequest
7 голосов
/ 26 января 2011

Я бы хотел запретить прямой доступ к некоторым выбранным каталогам.Но затем сделайте несколько файлов внутри выбранных каталогов доступными для прямого доступа по URL.У меня возникли проблемы с записью части , чтобы разрешить доступ к файлам .php в каталоге "xml /".Я хочу включить часть «пути» в директиву filesmatch, а не создавать отдельные директивы для каждого каталога, в котором я хочу получить определенные файлы, но он не работает ... работает, если я удалю/ 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 Ответ

11 голосов
/ 26 января 2011

FilesMatch работает исключительно с именами файлов - он вообще не смотрит на часть пути, поэтому вы никогда не получите '/ xml /' в имени файла в блоке FilesMatch. Вот почему выше DirectoryMatch. Сопоставьте каталог там, затем сопоставьте имена файлов в dirmatch.

...