In meinem Apache-WWW-Ordner ( /var/www
unter Ubuntu 10.10) habe ich:
mydir -> /home/user/mydir
(das habe ich mit erstellt ln -s
)
Nun, wenn ich eine Liste der Dateien im mydir
Web sehen will , muss ich Apache die Direktive geben FollowSymLinks
, richtig?
Aber wo lege ich es hin? In einer .htaccess
Datei? Wo? Ich habe viele Möglichkeiten ausprobiert, aber ich verstehe es nicht ...
Das ist meine /etc/apache2/sites-enabled/000-default
Akte:
<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>
Antworten:
Hier gibt es zwei Dinge:
symlinks
Angenommen,
/var/www
Ihr DocumentRoot ist Ihr virtueller Standardhost. Sie sollten (wahrscheinlich/etc/apache2/sites-enabled/000-default
) Ihre virtuelle Standardhost-Konfigurationsdatei finden und in diesen virtuellen Host-Block einfügen, zWenn 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
Indexes
Option aktivieren , z. B. Ändernin
/etc/apache2/sites-enabled/000-default
zu:Oder vielleicht ist eine sicherere Möglichkeit, es zu ändern:
und setzen Sie dies in
/home/user/mydir/.htaccess
.warum .htaccess nicht funktioniert
Standardmäßig setzt
Options <something>
in einer.htaccess
nicht wegen des anderen Eintrags in der Konfigurationsdatei Datei arbeiten:AllowOverride None
.Deshalb müssen wir dort setzen
AllowOverride Indexes
.( AllowOverride-Dokumentation )
quelle
sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir
, damit es funktioniert, und das ist wahrscheinlich keine gute Idee. Verschieben Sie die Dateien lieber irgendwo hinunter,/var/www
wenn Sie können./var/log/apache2/error.log
./var/www
→/home/user/directory
. Es wird große Kopfschmerzen verursachen.Die Option muss folgendermaßen verwendet werden:
Normalerweise wird es in der Apache-Konfiguration (
httpd.conf
oderconf.d/
odersites-enabled/
) innerhalb von a abgelegt<Directory>
.Siehe
Options
,AllowOverride
und<Directory>
in Apache - Dokumentation.quelle
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.
Aber es ist notwendig , dass Benutzer www-data hat Zugriff auf ALL dem Weg der Symlink Ziel (auch für Virtual nicht nur für simlinks). Zum Beispiel,
In diesem Beispiel benötigt der Benutzer www-data (oder alle Benutzer, die gefährlich sein können) Ausführungsrechte bis zum Verzeichnis. Benötige x Rechte in jedem von / path, / path / to und / path / to / mirror. Auch muss Read - Berechtigung für das Zielverzeichnis, und, abhängig vom Ziel des Verzeichnisses, vielleicht Benutzer www-data benötigen Schreibberechtigungen zu.
Hinweise wurden von https://stackoverflow.com/a/14623574 erhalten
quelle
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.
quelle