Qu'est-ce que les Options Multiviews exactement.htaccess?

J'ai beaucoup lutté avec une règle d'accès qui devait réécrire un morceau d'URL en ajoutant un chemin.

RewriteRule ^(configuration/.+)$ application-server/$1 [L,NC,R=301,NE]

Cette règle a causé juste une page blanche sur mon site Joomla sans journal d'erreur ou messages. La chose curieuse est que toutes les autres règles que j'avais parfaitement fonctionné:

RewriteRule ^(log/.+)$ application-server/$1 [L,NC,R=301,NE]
RewriteRule ^(monitor/.+)$ application-server/$1 [L,NC,R=301,NE]

À la fin, j'ai trouvé dans un forum une suggestion d'utiliser l'option suivante:

Options -Multiviews

Cela a effectivement résolu le problème, mais je me demande s'il peut y avoir des effets secondaires sur d'autres règles lors de l'utilisation cette option.

31
demandé sur Cœur 2014-08-21 13:45:27

1 réponses

Il s'agit de la négociation de contenu Apache.

Une recherche MultiViews est l'endroit où le serveur effectue une correspondance de modèle de nom de fichier implicite et choisit parmi les résultats.

Par exemple, si vous avez un fichier appelé configuration.php (ou une autre extension) dans le dossier racine et que vous configurez une règle dans votre htaccess pour un dossier virtuel appelé configuration/, puis vous aurez un problème avec votre règle, car le serveur choisir configuration.php automatiquement (si MultiViews est activé, ce qui est le cas la plupart du temps).

Si vous souhaitez désactiver ce comportement, il vous suffit d'ajouter ceci dans votre htaccess
Options -MultiViews

De cette façon, votre règle sera maintenant évaluée car la négociation de contenu est désactivée.

Modifier

Sur certains hébergements partagés, le module négociation peut ne pas être activé. Qui vous donnerait alors une erreur 500. Pour éviter cette erreur, vous pouvez, par défaut, encapsuler la directive dans un IfModule bloc.

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>
49
répondu Justin Iurman 2017-05-12 16:35:47