Описание Apache2 точно соответствует имени файла / каталога

#apache

#apache

Вопрос:

Я пытаюсь добавить описание в список каталогов (сгенерированный apache). Однако я не могу найти способ заставить текст описания применяться только для точного совпадения имени файла / каталога.

Например, если у меня есть следующая структура каталога / файла

 phpinfo2.php
phpinfo/
phpinfo.php
another_file.php
  

и я применяю директиву:

 AddDescription "PHP" phpinfo
  

Это соответствует 3 из 4 файлов / каталогов следующим образом:

 phpinfo2.php         PHP
phpinfo/             PHP
phpinfo.php          PHP
another_file.php
  

Однако то, что мне действительно хотелось бы, это:

 phpinfo2.php
phpinfo/             PHP
phpinfo.php
another_file.php
  

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

Документы (http://httpd.apache.org/docs/2.2/mod/mod_autoindex.html#adddescription ) скажите, что «File — это расширение файла, частичное имя файла, подстановочное выражение или полное имя файла для описания файлов». — то есть невозможно сопоставить только полное имя файла / каталога?

Любая помощь приветствуется, или если могут быть альтернативные способы достижения того, чего я хотел бы. Спасибо.

Ответ №1:

Вы можете сделать это:

 AddDescription "amp;nbsp;" *?phpinfo
AddDescription "amp;nbsp;" phpinfo?*
AddDescription "PHP" phpinfo
  

Apache применяет первое согласованное правило и пропускает любое следующее правило. Хитрость здесь заключается в том, чтобы использовать "amp;nbsp;" содержимое по умолчанию для файла / папки, которое ничему не соответствует, для аннулирования любого файла / папки, которое содержит, phpinfo но не является точным phpinfo , так что описание применяется только к файлу / папке с точным именем phpinfo .

Обратите внимание, что вы не можете использовать AddDescription "" ... , потому что Apache не допускает пустой строковый параметр и выдаст ошибку.

ссылка: документ Apache 2.4

Комментарии:

1. Два упрощения: (1) Поскольку Apache позволяет указывать несколько спецификаций файлов в строке добавления описания, вы можете объединить первые две строки добавления описания, и (2) вы также можете просто использовать пробел в кавычках вместо заключенного в кавычки amp;nbsp;.

2. Третье упрощение: поскольку Apache соответствует частичным именам файлов, вы можете опустить звездочки. «?» работает точно так же, как «?*»

Ответ №2:

похоже, вы можете сделать это путем «совпадения с первым попаданием».

Итак, директивы должны выглядеть следующим образом:

 AddDescription " " *.php
AddDescription "PHP" phpinfo