Как выбрать файл в подкаталоге по директиве files? - PullRequest
0 голосов
/ 03 ноября 2011

Я хочу скомпилировать код PHP в конкретном файле .htm, если файл, расположенный в корневом каталоге домена, я могу добавить

<Files file.htm>
    AddType application/x-httpd-php5 .htm
</Files>

в .htaccess, но что мне делать, если файл находится в другом каталоге (например, /sub/file.htm)?

Ответы [ 3 ]

1 голос
/ 31 октября 2016

Может быть, это можно сделать, если вы используете httpd 2.4 с поддержкой <if>

<If "%{PATH_INFO} =~ /.*\/sub\/(file|anotherfile|andanother)\.htm/">
   AddType application/x-httpd-php5 .htm
</If>
0 голосов
/ 03 ноября 2011

Может быть, вы хотите использовать httpd.conf вместо файла .htaccess. Вы можете использовать <Location>-directive в этом случае:

<Location /sub/file.htm>
   AddType application/x-httpd-php5 .htm
</Location>

Обратите внимание, что если вы хотите использовать регулярное выражение для соответствия местоположению, вам нужно написать ~ перед местоположением или использовать <LocationMatch>-directive.

например:.

<Location ~ "/sub/(file|anotherfile|andanother).htm">
   AddType application/x-httpd-php5 .htm
</Location>

EDIT:

Другое возможное решение (также только в virtualhost-config) должно быть объединено <Directory> и <Files> -directive:

<Directory /sub>
  <Files file.htm>
    AddType application/x-httpd-php5 .htm
  </Files>
</Directory>
0 голосов
/ 03 ноября 2011

Попробуйте FilesMatch:

<FilesMatch "file.htm$">
    AddType ...
</Files>

Он применяет регулярное выражение к имени файла, так что это будет соответствовать любому пути к файлу, который имеет "file.htm" в конце. Это применимо к любому файлу в любом каталоге, который заканчивается на «file.html». Обратите внимание, что это также будет соответствовать для "somefile.htm" и "/subdir/somefile.htm". Если в вашем дереве сайтов есть другие файлы, которые могут вызвать это, вам нужно изменить регулярное выражение, чтобы исключить их.

...