Apacheにシンボリックリンクを追跡させるにはどうすればよいですか?


98

私のApache wwwフォルダ(/var/wwwubuntu 10.10上)には次のものがあります:

mydir -> /home/user/mydir

(で作成したln -s

ここでmydir、Webからファイルのリストを表示したい場合、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>

また、私はまだ動作しません...設定ファイルのエイリアスを試してみました...
ルカ

回答:


65

ここには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オプションも有効にする必要があります。たとえば、change

    <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ドキュメント


上記の私の設定ファイルを見てください...まだ動作しません...
luca

許可の問題になりますか?I rootユーザーだけど、私は私がルートだ...とにかく、rootとしてシステムを使用するのは良いことではない知っていると私はへのシンボリックリンクディレクトリがルートホーム/ルートにある/ mydirの...
ルカ

1
はい。どのようなエラーメッセージが表示されますか?あなたはsudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydirそれを機能させるために行う必要があり、それはおそらく良い考えではありません。/var/www可能であれば、ファイルをどこか下に移動することをお勧めします。
ミケル

エラーが発生して支援を求めている場合は、必ず正確なエラーメッセージをお知らせください。そしてに手がかりがあるでしょう/var/log/apache2/error.log
ミケル

7
ホームディレクトリを暗号化するときは、ホームディレクトリを指していないこと、つまり/var/www→のシンボリックリンクを確認してください/home/user/directory。それは大きな頭痛の種になります。

11

オプションは次のように使用する必要があります。

Options +FollowSymLinks

通常、これは、Apacheの設定(に入れていますhttpd.confconf.d/またはsites-enabled/内部)<Directory>

参照してくださいOptionsAllowOverride<Directory>Apacheのマニュアルインチ


1
FollowSymLinksの場合、.confファイル内にある場合、特にディレクトリ構造内にある必要があります。Apacheの現在のマニュアルの「FollowSymLinksおよびSymLinksIfOwnerMatchオプションは、<Directory>セクションまたは.htaccessファイルでのみ機能します。」
ClearCrescendo

1
警告:+または-のオプションとオプションの混在は有効な構文ではなく、予期しない結果を引き起こす可能性があります。
kurdtpage

10

Apache 2.4.7を使用したUbuntu 14.04の元の(新鮮な)構成では、/ var / www / htmlの下に作成されたシンボリックリンクをたどるために* .confを変更する必要はありません。

ただし、ユーザーwww-dataは、symlinkターゲットのすべてのパスにアクセスできる必要があります(simlinkだけでなく、virtualhostでも)。例えば、

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

この例では、ユーザーwww-data(または必要な場合はすべてのユーザーですが、危険な場合があります)はディレクトリまでずっと実行権限を必要とします。/ path、/ path / to、および/ path / to / mirrorのそれぞれにx権限が必要です。また、ターゲットディレクトリに対する読み取りアクセス許可が必要です。ディレクトリの目的によっては、ユーザーwww-dataにも書き込みアクセス許可が必要な場合があります。

手掛かりはhttps://stackoverflow.com/a/14623574から取得しました


1

autoindex apacheモジュールをインストールするまで、これを機能させることはできませんでした。多数のブログ投稿およびフォーラム投稿のうち、誰もそれが必要であるとは言いませんでした。これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.