web-dev-qa-db-fra.com

HTML peut-il aller dans la valeur ErrorDocument en interne dans httpd.conf?

Selon la documentation Apache, le dernier paramètre de ErrorDocument peut être spécifié en tant que chemin, URL ou texte pour tout code d'erreur.

Jusqu'à présent, j'ai éliminé tout appel au système de fichiers d'E/S en utilisant du texte comme valeur finale. Par exemple, j'utilise ce qui suit dans mon fichier httpd.conf:

ErrorDocument 404 "Error: Not Found"

Et bien sûr, lorsque je redémarre Apache et qu'un utilisateur demande qu'un fichier ne soit pas trouvé, ils ne voient que "Erreur: Introuvable" à l'écran.

Tout va bien jusqu'à ce que je déclenche l'erreur dans Google Insights vitesse de page.

Voici l'URL du test:

https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fthenew.clubcatcher.com%2Fpictures%2Fnotexist

Pagespeed me dit de configurer la fenêtre d'affichage et d'utiliser des tailles de police lisibles.

Personnellement, je pense que c’est exagéré de considérer que la taille des pages d’erreur est si petite pour éviter que les bots n’atteignent ma bande passante. À présent, il semble que la solution consiste à ajouter une augmentation de 1000% par erreur déclenchée simplement pour rendre Google heureux. (C'est vrai, je devrais passer de 50 octets à plus de 500).

Je pourrais en dire plus, mais ce que je souhaite faire plaisir à tout le monde, c'est de formater mes pages d'erreur pour qu'elles contiennent du HTML, mais sans avoir besoin d'accéder au système de fichiers. Par exemple, je veux inclure quelque chose comme ceci dans mon httpd.conf:

ErrorDocument 404 '<html><head><meta name="viewport" content="width:device-width"></head><body>Not found</body></html>'

Un tel HTML rendrait la page plus compatible avec les utilisateurs mobiles, mais la question est de savoir si Apache accepterait le HTML en tant que texte. et si tel est le cas, comment puis-je le réorganiser de manière optimale afin qu'Apache le génère sous forme de fichier html brut afin que le navigateur convertisse les données correctement pour le client? Je le demande parce que ma valeur contient des guillemets et que je ne veux pas que Apache soit rejeté.

2
Mike

HTML peut-il aller dans la valeur ErrorDocument en interne dans httpd.conf?

Oui.

HTML est juste du texte et Apache semble l'envoyer avec un en-tête Content-Type: text/html par défaut de toute façon. Ainsi, lorsque ce "texte" frappe le navigateur, celui-ci est restitué au format HTML, même lors de l'envoi d'une simple chaîne de texte.

... Apache accepterait-il le HTML en tant que texte?

Comme indiqué ci-dessus, HTML est un texte. Il appartient au navigateur d’en faire quelque chose (à condition qu’il sache quoi en faire).

comment puis-je le réorganiser sous la meilleure forme pour qu'Apache le produise sous forme de fichier HTML brut

Ce que vous avez déjà semble bien aller.

parce que ma valeur contient des guillemets et que je ne veux pas que Apache soit rejeté.

L'argument transmis à la directive ErrorDocument doit être délimité par des guillemets (doubles ou simples) pour pouvoir être interprété comme du texte.

Si votre texte contient les mêmes guillemets que vous utilisez pour délimiter votre texte (par exemple, en utilisant des guillemets doubles dans une chaîne entourée de guillemets), ceux-ci doivent être précédés d'une barre oblique inversée. par exemple. "<meta name=\"viewport\" content...". Cependant, n'échappez pas les guillemets quand ils ne doivent pas obligatoirement l'être (par exemple, les guillemets doubles dans une seule chaîne de guillemets), sinon la barre oblique inverse est simplement vue comme une barre oblique inverse littérale.

L'utilisation de guillemets simples pour délimiter HTML semble être la meilleure option pour cette raison. (En supposant que les guillemets doubles sont utilisés pour les valeurs d'attribut.)

Si Apache est "éjecté", vous obtiendrez probablement une erreur 500 - vous saurez donc très vite que quelque chose est off!

Juste une pensée, pour le rendre lisible sur un petit écran, vous pouvez simplement utiliser une balise h1, plutôt qu’un document complet/conforme? (Google Pagespeed reconnaît-il cela?)

ErrorDocument 404 "<h1>Error: Not Found</h1>"

éliminer tous les appels au système de fichiers d'E/S

Cependant, je me demande si cela fait vraiment une différence?!

Un 404 détaillé contenant des informations utiles et des liens pour tilisateur est l’occasion de garder l’utilisateur sur votre site et de l’empêcher de rebondir. Cela pourrait être plus important que les E/S de fichiers et la bande passante supplémentaire qu'un bot pourrait consommer. (?)

1
MrWhite