Como obtenho a diretiva mod_autoindex 'AddDescription' do Apache para atuar somente em um diretório de nível superior?

3

Eu tenho um grande sistema de arquivos cheio de arquivos que estou 'compartilhando' via apache2 usando mod_autoindex.

A pasta do nível raiz do servidor contém cinco diretórios e eu gostaria de ter um comentário em cada pasta na coluna Descrição no nível raiz, e somente no nível raiz. Por exemplo, a pasta raiz pode ter esta aparência:

Index of /

Name       Last modified      Size   Description
george/    27-Feb-2011 15:50     -   
john/      27-Feb-2011 16:05     -   
paul/      19-Jun-2011 19:12     -   
pete/      12-Mar-2011 18:57     -   
ringo/     31-Oct-2011 18:42     -   

Se eu adicionar AddDescription "Can't do a drum roll" /ringo/ ao httpd.conf nada acontecerá.

Ao pesquisar com o Google, descobri que você deveria eliminar a barra inicial. Eu adiciono AddDescription "Can't do a drum roll" ringo/ e, em seguida, obtenho essa descrição em cada arquivo e subdiretório no diretório 'ringo', o que eu não quero.

Além disso, não recebo essa descrição na pasta ringo / na listagem do nível raiz, que é o que eu realmente quero.

Eu observei que na documentação do apache2, o descritor de arquivo nessa diretiva é "uma extensão de arquivo, nome de arquivo parcial, expressão de caractere curinga ou nome de arquivo completo para arquivos para descrever" , para que eu possa ver por que ele está passando pela estrutura completa do diretório, mas o que eu realmente quero é poder ter uma descrição em relação aos cinco diretórios de nível superior e em nenhum outro lugar.

Estou assumindo que as expressões regulares não fazem parte da sintaxe, porque a documentação não menciona isso e também porque não funcionou. Lembre-se, a documentação diz que você precisa da barra principal e esse também não é o caso.

    
por GarnerCX 31.10.2011 / 13:24

3 respostas

1

Se o DocumentRoot do seu site for /var/www , você poderá experimentar o conjunto de regras:

AddDescription " " */www/*/ringo
AddDescription " " */www/ringo?*
AddDescription "Can't do a drum roll" */www/ringo

O truque é usar " " , que é o conteúdo padrão para um arquivo / pasta que não corresponde a nada, para anular qualquer arquivo / pasta que corresponda a ringo , mas esteja em um diretório mais profundo ou tenha um sufixo depois de ringo .

Para uma explicação detalhada, você precisa conhecer as regras reais de AddDescription, o que é meio complicado:

Sintaxe: AddDescription string file [file] ...

  • string não pode estar vazio. Um erro ocorre se "" for fornecido.

  • file pode conter curingas * ot ? . Ambos podem corresponder a / .

  • file começando com / não corresponde a nada.

  • file contendo / corresponde a qualquer parte do caminho completo do arquivo acessado.

    • O "caminho inteiro" parece ser o caminho absoluto no servidor. Por exemplo, se o DocumentRoot de um site example.com for /var/www , todo o caminho da página http://example.com/myfolder/myfile.html será /var/www/myfolder/myfile.html .
    • Nesse caso, file será implicitamente anexado a */ para garantir uma correspondência completa do nome da pasta especificada. Por exemplo, myfolder/myfile.html na verdade significa */myfolder/myfile.html e, como resultado, corresponde a http://example.com/myfolder/myfile.html ( /var/www/myfolder/myfile.html ) e não corresponde a http://example.com/prefixedmyfolder/myfile.html ( /var/www/prefixedmyfolder/myfile.html ).
    • Não há / no nome do arquivo de uma pasta. Por exemplo, myfolder/subfolder/ ( */myfolder/subfolder/ ) não corresponde à pasta http://example.com/myfolder/subfolder ( /var/www/myfolder/subfolder ), mas myfolder/subfolder ( */myfolder/subfolder ) sim.
  • Caso contrário, file corresponde a qualquer parte do nome do arquivo acessado.

    • Por exemplo, hpin corresponde a http://example.com/phpinfo.php ( phpinfo.php ) ou http://example.com/subdir/phpinfo.php ( phpinfo.php ) e não corresponde a http://example.com/phpinfo/whatever.php ( whatever.php ).
  • A primeira correspondência é aplicada primeiro e qualquer correspondência a seguir será ignorada.

ref: Documento Apache 2.4

    
por 08.08.2016 / 16:26
0

A estrutura do nível raiz está estática e terá esses cinco diretórios e apenas esses cinco diretórios?

Então a maneira mais fácil pode ser fingir. Basta criar uma página HTML estática que pareça ter sido gerada por mod_autoindex . Adicione as descrições manualmente a essa página estática. Deixe o resto das páginas ser gerado por mod_autoindex .

    
por 31.10.2011 / 14:16
0

Também solte a barra à direita e pronto:

AddDescription "Can't do a drum roll" ringo
    
por 26.10.2014 / 17:20

Tags