it-swarm.com.de

Wie bringe ich Apache dazu, Symlinks zu folgen?

In meinem Apache www Ordner (/var/www unter Ubuntu 10.10) habe ich:

mydir -> /home/user/mydir

(das ich mit ln -s erstellt habe)

Wenn ich eine Liste der Dateien in mydir aus dem Web sehen möchte, muss ich Apache die Direktive FollowSymLinks geben, richtig?

Aber wo lege ich es hin? In einer .htaccess Datei? Woher? Ich habe viele Möglichkeiten ausprobiert, aber ich verstehe es nicht ...

Dies ist meine /etc/Apache2/sites-enabled/000-default Datei:

<VirtualHost *:80>
        ServerAdmin [email protected]

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

Hier gibt es zwei Dinge:

  1. symlinks
  2. verzeichnisliste

symlinks

Angenommen, /var/www ist Ihr DocumentRoot für Ihren virtuellen Standardhost, dann sollten Sie Ihre virtuelle Standardhost-Konfigurationsdatei (wahrscheinlich /etc/Apache2/sites-enabled/000-default) finden und in diesen virtuellen Host-Block einfügen, z.

<VirtualHost *:80>
    ServerAdmin [email protected]

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

Wenn Sie nichts geändert haben, sollte diese Option bereits vorhanden sein.

Verzeichnisliste

Damit Apache die Dateien in einem Verzeichnis auflistet, müssen Sie auch die Option Indexes aktivieren, z. Veränderung

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

in /etc/Apache2/sites-enabled/000-default an:

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

Oder vielleicht ist eine sicherere Möglichkeit, es zu ändern:

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

und setze dies in /home/user/mydir/.htaccess.

    Option Indexes

warum .htaccess nicht funktioniert

Standardmäßig funktioniert das Einfügen von Options <something> in eine .htaccess-Datei aufgrund des anderen Eintrags in Ihrer Konfigurationsdatei nicht: AllowOverride None.

Deshalb müssen wir dort AllowOverride Indexes setzen.

( AllowOverride-Dokumentation )

64
Mikel

Die Option muss folgendermaßen verwendet werden:

Options +FollowSymLinks

Normalerweise wird die Apache-Konfiguration (httpd.conf oder conf.d/ oder sites-enabled/) in einen <Directory> eingefügt.

Siehe Options , AllowOverride und <Directory> in der Apache-Dokumentation.

11
grawity

Mit der ursprünglichen (frischen) Konfiguration unter Ubuntu 14.04 mit Apache 2.4.7 muss nichts in der * .conf geändert werden, um den unter/var/www/html erstellten Symlinks zu folgen.

Es ist jedoch erforderlich, dass der Benutzer www-data Zugriff aufALLden Pfad des Symlink-Ziels hat (auch für virtuelle Hosts, nicht nur für Simlinks). Zum Beispiel,

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

In diesem Beispiel benötigt der Benutzer www-data (oder alle Benutzer, die gefährlich sein können) execute -Rechte bis zum Verzeichnis. Benötige x Rechte in jedem von/path,/path/to und/path/to/mirror. Außerdem benötigt Read die Berechtigung für das Zielverzeichnis, und je nach Ziel des Verzeichnisses benötigt der Benutzer www-data möglicherweise auch Schreibberechtigungen.

Hinweise wurden von https://stackoverflow.com/a/14623574 erhalten.

10
victe

Ich konnte das nicht zum Laufen bringen, bis ich das Autoindex-Apache-Modul installiert hatte. Von den zahlreichen Blog-Posts und Forum-Posts erwähnte niemand, dass dies notwendig sei. Hoffe das hilft jemandem.

1
originalbryan