webserver – どのようにして Apache をシンボリックリンクに従わせるのですか?

apache-http-server webserver

私の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つのことがあります

  1. symlinks
  2. 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を入れないといけない

(AllowOverride documentation)

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


タイトルとURLをコピーしました