2011-02-10 21:52:57 +0000 2011-02-10 21:52:57 +0000
101
101

Hoe krijg ik Apache zover dat hij symlinks volgt?

In mijn apache www map (/var/www op ubuntu 10.10) heb ik:

mydir -> /home/user/mydir

(die ik met ln -s heb gemaakt)

Nu, als ik een lijst wil zien van de bestanden in mydir van het web, moet ik apache de richtlijn FollowSymLinks geven, toch?

Maar waar moet ik die zetten? In een .htaccess bestand? Waar? Ik heb het op vele manieren geprobeerd maar ik begrijp het niet…

Dit is mijn /etc/apache2/sites-enabled/000-default bestand:

<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>

Antwoorden (4)

67
67
67
2011-02-10 21:56:40 +0000

Er zijn hier twee dingen:

  1. symlinks
  2. directory listing

symlinks

In de veronderstelling dat /var/www uw standaard virtuele host is, moet u uw standaard virtual host configuratiebestand (waarschijnlijk /etc/apache2/sites-enabled/000-default) vinden en het in dat virtuele host blok plaatsen, e. g.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

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

Als u niets heeft veranderd, zou die optie al aanwezig moeten zijn.

directory listing

Om Apache de bestanden in een directory te laten weergeven, moet u ook de optie Indexes inschakelen, e. g. verander

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

in /etc/apache2/sites-enabled/000-default in:

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

of, misschien is een veiligere manier om het te veranderen in:

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

en dit in /home/user/mydir/.htaccess te zetten.

Option Indexes

waarom . htaccess werkt niet

Standaard werkt het niet om Options <something> in een .htaccess-bestand te zetten vanwege de andere vermelding in uw configuratiebestand: AllowOverride None.

Daarom moeten we AllowOverride Indexes daar zetten.

AllowOverride documentatie )

12
12
12
2011-02-10 22:00:05 +0000

De optie moet zo worden gebruikt:

Options +FollowSymLinks

Gewoonlijk wordt deze in de Apache-configuratie (httpd.conf of conf.d/ of sites-enabled/) in een <Directory> geplaatst.

Zie Options , AllowOverride en <Directory> in de Apache-documentatie.

10
10
10
2014-10-02 19:14:39 +0000

Met de originele (verse) configuratie op Ubuntu 14.04 met apache 2.4.7, is het niet nodig om iets te veranderen in *.conf om symlinks te volgen die zijn gemaakt onder /var/www/html.

Maar het is noodzakelijk dat de gebruiker www-data toegang heeft tot ALL het pad van symlink target (zelfs voor virtualhosts niet alleen voor simlinks). Bijvoorbeeld,

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

In dit voorbeeld heeft gebruiker www-data (of alle gebruikers als je wilt, maar kan gevaarlijk zijn) uitvoeren rechten nodig tot aan de directory. Hebben x rechten nodig in elk van /path, /path/to, en /path/to/mirror. Heeft ook Lees rechten nodig op de doelmap, en, afhankelijk van het doel van de map, heeft de gebruiker www-data misschien ook schrijfrechten nodig.

Clue werd verkregen van https://stackoverflow.com/a/14623574

1
1
1
2014-09-10 15:31:58 +0000

Ik kon dit niet aan de gang krijgen tot de installatie van de auto-index apache-module. Van de vele blogberichten en forumberichten heeft niemand gezegd dat het nodig was. Ik hoop dat dit iemand helpt.