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.
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 htaccessOptions -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>