2011-02-10 21:52:57 +0000 2011-02-10 21:52:57 +0000
101
101

どうすればApacheにシンボリックリンクを追わせることができますか?

私の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>

回答 (4)

67
67
67
2011-02-10 21:56:40 +0000

ここでは 2 つのことがあります:

1.シンボリックリンク 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 オプションも有効にする必要があります。 例えば、/etc/apache2/sites-enabled/000-default

<Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

/home/user/mydir/.htaccess に変えて下さい:

<Directory />
        Options FollowSymLinks Indexes
        AllowOverride None
    </Directory>

または、おそらくより安全な方法はそれをに変えることです:

<Directory />
        Options FollowSymLinks
        AllowOverride Indexes
    </Directory>

そして Options <something> にこれを置いて下さい。 .htaccess は動作しません**

デフォルトでは、.htaccessAllowOverride None ファイルに入れても、設定ファイルの他のエントリ: AllowOverride Indexes のために動作しません。

12
12
12
2011-02-10 22:00:05 +0000
Options +FollowSymLinks

通常は、httpd.conf の中の Apache の設定 (conf.d/ または sites-enabled/ または <Directory>) に置かれます。

10
10
10
2014-10-02 19:14:39 +0000

Ubuntu 14.04 と apache 2.4.7 の元の設定では、/var/www/html の下に作成されたシンボリックリンクに従うために、*.conf の中で何も変更する必要はありません。例えば、

cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran

この例では、ユーザー www-data (または望むならばすべてのユーザーが必要ですが、危険な場合もあります) はディレクトリに至るまで execute の権利を必要としています。path、/path/to、および/path/to/mirror のそれぞれに x の権限が必要です。また、ターゲットディレクトリには Read 権限が必要です。

1
1
1
2014-09-10 15:31:58 +0000

autoindex apacheモジュールをインストールするまで、これがうまくいかなかった。数多くのブログ記事やフォーラムの記事の中で、誰もそれが必要であることに言及していませんでした。これが誰かの助けになることを願っています。