Dans /etc/Apache2/Apache2.conf
, j'ai la configuration suivante pour Apache en ce qui concerne le répertoire /var/www
:
<Directory /var/www/>
Options -Indexes -Includes -ExecCGI
AllowOverride All
Require all granted
</Directory>
Dans /etc/Apache2/sites-enabled/example.com.conf
, voici comment j'ai configuré mon hôte virtuel pour 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>
Tout fonctionne bien jusqu'à présent.
Mais dès que je modifie la partie <Directory /var/www/>
(voir ci-dessus) à partir de
Options -Indexes -Includes -ExecCGI
à
Options -Indexes -FollowSymLinks -Includes -ExecCGI
le site Web cesse de fonctionner et renvoie l'erreur 403
à la place.
Pourquoi cela arrive-t-il? Nulle part je n’ai utilisé de lien symbolique, du moins pas consciemment. Apache les utilise-t-il donc en interne lorsqu'il travaille avec des hôtes virtuels?
Je ne vois aucune raison pour laquelle cette option devrait casser la configuration. Le site Web est en fait stocké dans /var/www/example.com/public
, ce n'est pas non plus un lien symbolique.
Les journaux d’erreur Apache expliquent la raison de ce problème:
[rewrite: error] [pid ...] [client ...] AH00670: Les options FollowSymLinks et SymLinksIfOwnerMatch sont toutes deux désactivées. La directive RewriteRule est également interdite en raison de sa capacité similaire à contourner les restrictions de répertoire.
Utiliser mod_rewrite
avec RewriteRule
(comme cela est courant) tandis que désactiverFollowSymLinks
(comme indiqué dans la question) n'est possible que si SymLinksIfOwnerMatch
est - activé en retour.
Ainsi
-FollowSymLinks
doit devenir
-FollowSymLinks +SymLinksIfOwnerMatch
omod_rewrite
avec RewriteRule
ne peut plus être utilisé.
Merci pour l'allusion, @fkraiem!