Dalam folder www apache saya ( /var/www
di ubuntu 10.10) saya punya:
mydir -> /home/user/mydir
(yang saya buat dengan ln -s
)
Sekarang, jika saya ingin melihat daftar file mydir
dari web, saya harus memberikan arahan apache FollowSymLinks
, kan?
Tapi di mana saya meletakkannya? Dalam sebuah .htaccess
file? Dimana? Saya mencoba banyak cara tetapi saya tidak memahaminya ...
Ini /etc/apache2/sites-enabled/000-default
file saya :
<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>
Jawaban:
Ada dua hal di sini:
symlinks
Dengan asumsi
/var/www
DocumentRoot Anda untuk host virtual default Anda, Anda harus menemukan file konfigurasi virtual host default Anda (mungkin/etc/apache2/sites-enabled/000-default
) dan memasukkannya ke dalam blok host virtual itu, misalnyaJika Anda belum mengubah apa pun, opsi itu seharusnya sudah ada di sana.
daftar direktori
Untuk membuat Apache mendaftar file dalam direktori, Anda perlu mengaktifkan
Indexes
opsi juga, misalnya mengubahmasuk
/etc/apache2/sites-enabled/000-default
ke:Atau, mungkin cara yang lebih aman adalah mengubahnya menjadi:
dan memasukkan ini ke dalam
/home/user/mydir/.htaccess
.mengapa .htaccess tidak berfungsi
Secara default, menempatkan
Options <something>
dalam.htaccess
berkas tidak akan bekerja karena masuknya lain di file konfigurasi Anda:AllowOverride None
.Itu sebabnya kita harus meletakkannya di
AllowOverride Indexes
sana.( Dokumentasi AllowOverride )
sumber
sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir
untuk membuatnya bekerja, dan itu mungkin bukan ide yang baik. Lebih baik memindahkan file di suatu tempat di bawah/var/www
jika Anda bisa./var/log/apache2/error.log
./var/www
→/home/user/directory
. Ini akan menghasilkan sakit kepala yang sangat besar.Opsi harus digunakan seperti ini:
Biasanya diletakkan di konfigurasi Apache (
httpd.conf
atauconf.d/
atausites-enabled/
) di dalam a<Directory>
.Lihat
Options
,AllowOverride
dan<Directory>
dalam dokumentasi Apache.sumber
Dengan konfigurasi asli (segar) pada Ubuntu 14.04 dengan apache 2.4.7, tidak perlu mengubah apa pun di * .conf untuk mengikuti symlink yang dibuat di bawah / var / www / html.
Tetapi perlu bahwa pengguna www-data memiliki akses ke SEMUA jalur target symlink (bahkan untuk virtualhosts tidak hanya untuk simlink). Misalnya,
Dalam contoh ini pengguna www-data (atau semua pengguna jika Anda mau, tetapi bisa berbahaya) perlu menjalankan hak sampai ke direktori. Perlu hak x di setiap / path, / path / ke, dan / path / ke / mirror. Juga perlu izin Baca di direktori target, dan, tergantung pada tujuan direktori, mungkin pengguna www-data juga perlu izin menulis.
Clue diperoleh dari https://stackoverflow.com/a/14623574
sumber
Saya tidak bisa menjalankan ini sampai menginstal modul apache autoindex. Dari banyak posting blog dan posting forum, tidak ada yang menyebutkan itu perlu. Semoga ini bisa membantu seseorang.
sumber