web-dev-qa-db-fra.com

Les hôtes virtuels dans Apache exigent-ils que l'option "FollowSymLinks" soit activée?

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.

2
caw

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!

1
caw