/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
に保存されますが、これもシンボリックリンクではありません。
Apacheエラーログは、この問題の理由を説明しています。
[rewrite:error] [pid ...] [client ...] AH00670:オプションFollowSymLinksとSymLinksIfOwnerMatchの両方がオフになっているため、ディレクトリ制限を回避する同様の機能によりRewriteRuleディレクティブも禁止されています
mod_rewrite
をRewriteRule
と共に使用する(一般的な)一方で、無効化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!