W moim folderze www Apache ( /var/www
na Ubuntu 10.10) mam:
mydir -> /home/user/mydir
(które stworzyłem ln -s
)
Teraz, jeśli chcę zobaczyć listę plików mydir
z Internetu, muszę podać dyrektywę Apache FollowSymLinks
, prawda?
Ale gdzie to położyć? W .htaccess
pliku? Gdzie? Próbowałem na wiele sposobów, ale nie rozumiem ...
To jest mój /etc/apache2/sites-enabled/000-default
plik:
<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>
Odpowiedzi:
Są tutaj dwie rzeczy:
dowiązania symboliczne
Zakładając,
/var/www
że DocumentRoot jest domyślnym hostem wirtualnym, powinieneś znaleźć domyślny plik konfiguracji hosta wirtualnego (prawdopodobnie/etc/apache2/sites-enabled/000-default
) i umieścić go w tym bloku hosta wirtualnego, np.Jeśli nic nie zmieniłeś, ta opcja powinna już tam być.
lista katalogów
Aby Apache wyświetlał listę plików w katalogu, musisz również włączyć tę
Indexes
opcję, np. Zmieńw
/etc/apache2/sites-enabled/000-default
do:Lub, być może, bezpieczniejszym sposobem jest zmiana na:
i włóż to
/home/user/mydir/.htaccess
.dlaczego .htaccess nie działa
Domyślnie umieszczenie
Options <something>
w.htaccess
pliku nie będzie działać ze względu na inny wpis w pliku konfiguracyjnym:AllowOverride None
.Dlatego musimy to
AllowOverride Indexes
tam umieścić .( Dokumentacja AllowOverride )
źródło
sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir
aby działało, a to prawdopodobnie nie jest dobry pomysł. Lepiej przenieść pliki gdzieś pod,/var/www
jeśli możesz./var/log/apache2/error.log
./var/www
→/home/user/directory
. Spowoduje to ogromny ból głowy.Opcji należy użyć w następujący sposób:
Zwykle jest umieszczany w konfiguracji Apache (
httpd.conf
lubconf.d/
lubsites-enabled/
) wewnątrz<Directory>
.Patrz
Options
,AllowOverride
a<Directory>
w dokumentacji Apache.źródło
W oryginalnej (świeżej) konfiguracji Ubuntu 14.04 z apache 2.4.7 nie ma potrzeby zmiany czegokolwiek w * .conf, aby śledzić dowiązania symboliczne utworzone w / var / www / html.
Konieczne jest jednak, aby użytkownik www-dane miał dostęp do WSZYSTKIEJ ścieżki celu dowiązania symbolicznego (nawet dla wirtualnych hostów nie tylko dla dowiązań simlink). Na przykład,
W tym przykładzie dane www użytkownika (lub wszyscy użytkownicy, jeśli chcesz, ale mogą być niebezpieczne) muszą wykonywać prawa dostępu do katalogu. Potrzebujesz praw x do każdego z / path, / path / to i / path / to / mirror. Potrzebuje również uprawnień do odczytu katalogu docelowego i, zależnie od celu katalogu, być może użytkownik www-data również potrzebuje uprawnień do zapisu.
Wskazówkę uzyskano z https://stackoverflow.com/a/14623574
źródło
Nie mogłem tego uruchomić, dopóki nie zainstaluję modułu apache autoindex. Z licznych postów na blogach i postów na forum nikt nie wspomniał o tym, że jest to konieczne. Mam nadzieję, że to komuś pomoże.
źródło