IIS 8.5 – erreur lors du retour du fichier 404 statique

IIS8.5> Sites> mysite> Pages d'erreur> 404

Quand je visite une page, je sais que je ne suis pas là.

The page cannot be displayed because an internal server error has occurred. 

Pourquoi ne reçois-je pas mon fichier 404 personnalisé?

Je ne pense pas que ce soit une chose de permission, j'ai essayé de déplacer "notfound.html" vers plusieurs endroits, dont l'un est le dossier wwwroot du site réel qui sert le reste du site.

Cette erreur est générée car un chemin absolu est détecté dans web.config .

Le chemin physique absolu (comme C:\path\to\notfound.html ) n'est pas autorisé dans la section system.webServer/httpErrors dans le fichier web.config .

Maintenant, vous avez 2 solutions:


1. Autoriser le chemin physique dans le fichier ApplicationHost.config

Par défaut, ce fichier se trouve dans %SystemRoot%\system32\inetsrv\config

Localisez ce fichier et modifiez-le

Rechercher la section <httpErrors ..... >

Ensuite, ajoutez la directive allowAbsolutePathsWhenDelegated="true" , comme suit:

 <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" allowAbsolutePathsWhenDelegated="true"> .... .... </httpErrors> 

Enregistrez le fichier, devrait fonctionner!


2. Utilisez le chemin relatif

Le chemin relatif signifie que vous devrez stocker vos pages d'erreur personnalisées dans le dossier racine du site Web donné.

Ensuite, accédez à IIS > Sites > mysite > Error Pages > 404

Et configurez votre page d'erreur personnalisée comme ceci:

Entrez la description de l'image ici

Cliquez sur OK , devrait fonctionner!


MODIFIER :

Cependant, notez que:

  • La solution 1 envoie une réponse 404 Not Found
  • La solution 2 envoie une réponse de 200 OK

J'ai snoopé et trouvé qu'il y a une chose appelée "allowAbsolutePathsWhenDelegated" qui est définie sur "false" par défaut.

 IIS8.5 > Sites > mysite > Management > Configuration Editor > system.webServer/httpErrors 

Cependant, la valeur est verrouillée et ne peut pas être modifiée là-bas. J'ai donc cliqué sur la racine dans l'arbre et je peux l'éditer là-bas.

 IIS8.5 > Management > Configuration Editor > system.webServer/httpErrors 

Notez que la racine n'est pas réellement appelée "IIS8.5", elle porte le nom du nom de votre ordinateur.

Donc après allowAbsolutePathsWhenDelegated a été défini comme vrai, tout a bien fonctionné. Une solution différente aurait été de mettre le fichier statique dans le dossier wwwroot de mon site et d'entrer le nom de celui-ci comme la page d'erreur 404 (bien que dans mon cas, il soit mieux avec un chemin absolu au lieu d'un paramètre relatif).

Ce qui me dérange, c'est qu'il n'y a aucune mention sur l'écran "Pages d'erreur" à propos de cette restriction par défaut. Il ne dit rien sur le chemin qui doit être relatif à la racine de votre site et que la valeur par défaut n'est PAS relative (c'est dans le dossier inetpub), vous supposez qu'un chemin absolu fonctionnerait bien.

Espérons que Microsoft corrigera ce problème d'interface dans une version ultérieure. Il suffit d'être plus clair sur les restrictions dans les champs de saisie, s'il vous plaît.