Como obtenho o Apache para seguir links simbólicos?

87

Na minha pasta www do apache ( /var/www no ubuntu 10.10) eu tenho:

mydir -> /home/user/mydir

(que criei com ln -s )

Agora, se eu quiser ver uma listagem dos arquivos em mydir da web, eu preciso dar ao apache a diretiva FollowSymLinks , certo?

Mas onde eu coloco isso? Em um arquivo .htaccess ? Onde? Eu tentei de várias maneiras, mas não entendi ...

Este é o meu arquivo /etc/apache2/sites-enabled/000-default :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks Indexes
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    Alias /downloads/ "/root/mydir/"
    <Directory "/root/mydir">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>
    
por luca 10.02.2011 / 22:52

4 respostas

59

Existem duas coisas aqui:

  1. links simbólicos
  2. listagem de diretório

links simbólicos

Assumindo que /var/www é seu DocumentRoot para seu host virtual padrão, você deve encontrar seu arquivo de configuração de host virtual padrão (provavelmente /etc/apache2/sites-enabled/000-default ) e colocá-lo nesse bloco de host virtual, por exemplo

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

Se você não mudou nada, essa opção já deve estar lá.

listagem de diretórios

Para fazer com que o Apache liste os arquivos em um diretório, você também precisa ativar a opção Indexes , por exemplo, mudar

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

em /etc/apache2/sites-enabled/000-default para:

    <Directory />
        Options FollowSymLinks Indexes
        AllowOverride None
    </Directory>

Ou, talvez, uma maneira mais segura é alterá-lo para:

    <Directory />
        Options FollowSymLinks
        AllowOverride Indexes
    </Directory>

e coloque isso em /home/user/mydir/.htaccess .

    Option Indexes

por que o .htaccess não funciona

Por padrão, colocar Options <something> em um arquivo .htaccess não funcionará devido à outra entrada no seu arquivo de configuração: AllowOverride None .

É por isso que temos que colocar AllowOverride Indexes .

( documentação do AllowOverride )

    
por 10.02.2011 / 22:56
10

Com a configuração original (fresca) no Ubuntu 14.04 com o apache 2.4.7, não há necessidade de alterar nada no * .conf para seguir os links simbólicos criados em / var / www / html.

Mas é necessário que o usuário www-data tenha acesso a ALL o caminho do destino do symlink (mesmo para virtualhosts não apenas para simlinks). Por exemplo,

cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran

Neste exemplo, o usuário www-data (ou todos os usuários, se quiser, mas pode ser perigoso) precisa dos direitos execute até o diretório. Precisa de x direitos em cada um dos / path, / path / to e / path / to / mirror. Também precisa de permissão de Leitura no diretório de destino e, dependendo do objetivo do diretório, talvez o usuário www-data também precise de permissões de gravação.

A pista foi obtida no link

    
por 02.10.2014 / 21:14
10

A opção deve ser usada assim:

Options +FollowSymLinks

Geralmente é colocado na configuração do Apache ( httpd.conf ou conf.d/ ou sites-enabled/ ) dentro de um <Directory> .

Veja Options , AllowOverride e <Directory> na documentação do Apache.

    
por 10.02.2011 / 23:00
1

Eu não consegui fazer isso funcionar até instalar o módulo apache do autoindex. De inúmeros posts no blog e posts do fórum, ninguém mencionou que é necessário. Espero que isso ajude alguém.

    
por 10.09.2014 / 17:31