web-dev-qa-db-ja.com

Apacheの仮想ホストでは、「FollowSymLinks」オプションを有効にする必要がありますか?

/etc/Apache2/Apache2.confには、/var/wwwディレクトリに関するApacheの次の構成があります。

<Directory /var/www/>
    Options -Indexes -Includes -ExecCGI
    AllowOverride All
    Require all granted
</Directory>

/etc/Apache2/sites-enabled/example.com.confでは、これがexample.comの仮想ホストの設定方法です。

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com/public

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

これまでのところ、すべてが正常に機能しています。

ただし、<Directory /var/www/>部分(上記を参照)を編集するとすぐに

Options -Indexes -Includes -ExecCGI

Options -Indexes -FollowSymLinks -Includes -ExecCGI

webサイトは動作を停止し、代わりに403エラーで応答します。

なぜこうなった?少なくとも意識的には、どこにもシンボリックリンクを使用していません。それでは、Apacheは仮想ホストを操作するときにそれらを内部的に使用していますか?

私はそのオプションがセットアップを壊すべきである理由を見ません。ウェブサイトは実際には/var/www/example.com/publicに保存されますが、これもシンボリックリンクではありません。

2
caw

Apacheエラーログは、この問題の理由を説明しています。

[rewrite:error] [pid ...] [client ...] AH00670:オプションFollowSymLinksとSymLinksIfOwnerMatchの両方がオフになっているため、ディレクトリ制限を回避する同様の機能によりRewriteRuleディレクティブも禁止されています

mod_rewriteRewriteRuleと共に使用する(一般的な)一方で、無効化FollowSymLinks(質問に示されているように)は、SymLinksIfOwnerMatchが- 有効.

副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example

-FollowSymLinks

なる必要があります

-FollowSymLinks +SymLinksIfOwnerMatch

またはmod_rewrite with RewriteRuleは使用できなくなりました。

ヒントをありがとう、@ fkraiem!

1
caw