私のApache wwwフォルダ(ubuntu 10.10の/var/www
)には、
mydir -> /home/user/mydir
(私はln -s
で作成しました)
さて、Webから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>
ここに2つのことがあります。
シンボリックリンク
/var/www
があなたのデフォルト仮想ホスト用のあなたのDocumentRootであると仮定すると、あなたはあなたのデフォルト仮想ホスト設定ファイル(おそらく/etc/Apache2/sites-enabled/000-default
)を見つけてそれをその仮想ホストブロックの中に置くべきです。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
何も変更していなければ、そのオプションはすでに存在しているはずです。
ディレクトリ一覧
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
をそこに置かなければなりません。
このオプションは次のように使用しなければなりません。
Options +FollowSymLinks
通常、それはhttpd.conf
内のApache設定(conf.d/
またはsites-enabled/
または<Directory>
)に置かれます。
Options
、 AllowOverride
、および を参照してください。 Apacheのドキュメントの<Directory>
。
Apache 2.4.7を使用したUbuntu 14.04上の元の(新しい)設定では、/ var/www/htmlの下に作成されたシンボリックリンクをたどるために* .conf内の何かを変更する必要はありません。
しかし、www-dataユーザーがALLシンボリックリンクターゲットのパスにアクセスできることが必要です(simlinksだけでなく仮想ホストの場合でも)。例えば、
cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran
この例では、ユーザwww-data(または望むなら全てのユーザですが、危険かもしれません)はexecuterightsをディレクトリまでずっと必要とします。/path、/ path/to、および/ path/to/mirrorのそれぞれにx権限が必要です。ターゲットディレクトリに対するReadpermissionも必要です。また、ディレクトリの目的によっては、www-dataユーザーにも書き込み権限が必要です。
手がかりは https://stackoverflow.com/a/14623574 から取得しました
Autoindex Apacheモジュールをインストールするまで、私はこれを動かすことができませんでした。多数のブログ投稿やフォーラム投稿の中で、誰もそれが必要であるとは述べていません。これが誰かに役立つことを願っています。