私のapache wwwフォルダ(ubuntu 10.10では/var/www
)には、私は持っています
mydir -> /home/user/mydir
(ln -s
で作成したもの)
さて、ウェブからmydir
のファイルの一覧を見たい場合は、apacheにFollowSymLinks
のディレクティブを与えなければなりませんよね?
しかし、どこに置けばいいのでしょうか?.htaccess
ファイルに?どこに?いろいろ試してみましたが、よくわかりません・・・
これは私の/etc/apache2/sites-enabled/000-default
ファイルです
<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>
104 luca 2011-02-10
ここには2つのことがあります
- symlinks
- directory listing
symlinks
/var/www
がデフォルトのバーチャルホストの DocumentRoot だとすると、デフォルトのバーチャルホスト設定ファイル (おそらく /etc/apache2/sites-enabled/000-default
) を見つけて、バーチャルホストブロックの中に置く必要があります
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
何も変更していなければ、そのオプションはすでに存在しているはずです
directory listing
Apache にディレクトリ内のファイルを一覧表示させるには、 Indexes
オプションも有効にする必要があります
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
に/etc/apache2/sites-enabled/000-default
で
<Directory />
Options FollowSymLinks Indexes
AllowOverride None
</Directory>
というか、もっと安全な方法に変えた方がいいかもしれません
<Directory />
Options FollowSymLinks
AllowOverride Indexes
</Directory>
で、これを/home/user/mydir/.htaccess
に入れます
Option Indexes
.htaccessが動かない理由
デフォルトでは、Options <something>
を.htaccess
ファイルに入れても、設定ファイルの他のエントリのために動作しません。AllowOverride None
だからこそ、そこにAllowOverride Indexes
を入れないといけない
71 Mikel 2011-02-10
オプションはこのように使用する必要があります
Options +FollowSymLinks
通常は <Directory>
の中の Apache の設定 (httpd.conf
または conf.d/
または sites-enabled/
) に置かれます
Apache ドキュメントの Options
, AllowOverride
, <Directory>
を参照してください
12 user1686 2011-02-10
Ubuntu 14.04とapache 2.4.7の元々の(新鮮な)設定では、/var/www/htmlの下に作成されたシンボリックリンクに従うように*.confで何かを変更する必要はありません
しかし、ユーザwww-dataがシンボリックリンク先の全てのパスにアクセスできる必要があります(シムリンクだけでなくバーチャルホストの場合も)。例えば
cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran
この例では、ユーザ www-data (必要であればすべてのユーザでもよいのですが、危険な場合もあります) はディレクトリに至るまでの実行権を必要とします。path, /path/to, /path/to/mirror のそれぞれに x の権限が必要です。また、ターゲットディレクトリの Read 権限も必要で、ディレクトリの目的によっては、ユーザ www-data にも書き込み権限が必要です
ヒントはhttps://stackoverflow.com/a/14623574から得た
10 victe 2014-10-02
autoindex apacheモジュールをインストールするまで、これがうまくいかなかった。数多くのブログ記事やフォーラムの記事の中で、誰もそれが必要であることに言及していませんでした。これが誰かの助けになることを願っています
1 originalbryan 2014-09-10