web-dev-qa-db-fra.com

Pourquoi utiliser une page 404 personnalisée qui redirige avec du code par rapport à une redirection 301?

Nous déplaçons un site Web de Joomla vers Mura et certaines des pages seront situées à des adresses URL différentes.

Je peux configurer des redirections 301 dans la section des règles du fichier web.config afin de rediriger les anciennes URL vers de nouveaux emplacements.

Cependant, mon patron souhaite que je crée une page 404 personnalisée qui déterminera l'URL demandée, puis redirigera vers la nouvelle. Les deux informations seraient stockées dans une base de données que la page 404 personnalisée utilisera pour effectuer la redirection correcte.

C'est une question entre faire

<rule name="rulename">
      <match url="OLD_URL" />
      <action type="Redirect" redirectType="Permanent" url="NEW_URL" />
</rule>

dans le fichier web.config ou,

<cfset path = cgi.path_info>
<cfif path eq "OLD_URL">
<cfheader statuscode="301" statustext="Moved permanently">
<cfheader name="Location" value="NEW_URL">
<cfabort>

Dans l'en-tête de la page 404 personnalisée dans le modèle Coldfusion. J'ai vérifié et la redirection Coldfusion renvoie un code d'état 301.

Pour moi, il semble que les meilleurs redirections soient les redirections 301 dans le fichier web.config. Y at-il quelque chose qui me manque ici?

4
user95472

y a-t-il quelque chose qui me manque ici?

Je pense qu'il y a.

En utilisant la page 404 personnalisée pour vérifier l'URL puis redirection, une redirection 301 est renvoyée au client. Identique à la création de la redirection directement dans la configuration du serveur. Le client ne voit pas un 404 lorsqu'une redirection a lieu. Ce n'est que lorsqu'aucune redirection ne se produit (c'est-à-dire que l'URL n'est pas dans votre recherche de base de données) que la page 404 personnalisée solution de repli renvoie une réponse 404 par défaut.

C’est une bonne idée ... au lieu de traiter la logique de redirection early, on every request - ce qui peut éventuellement avoir une incidence sur les performances des demandes de page légitimes (si vous avez 1 000 des redirections personnalisées) - vous traitez plutôt la logique de redirection tard dans la demande, c'est-à-dire. lorsque vous avez déjà déterminé que la page n'existe pas. De cette façon, votre logique de redirection n’a aucun impact sur l’utilisation normale du site.

Si vous n'avez qu'une poignée de redirections, les performances ne font aucune différence. Une redirection 301 se produit toujours dans les deux situations. (Bien que la gestion des redirections dans une base de données pourrait être soit plus facile à gérer.) Cependant, une fois que vous avez 100, 1000, 10000 redirections (en raison d'une migration de site), l'utilisation d'un "404 personnalisé" est vraiment la seul moyen d'y aller.

Un "404 personnalisé" est peut-être un peu trompeur (bien que ce soit peut-être la façon dont il est implémenté, cela dépend de votre application/CMS) ... ce que vous faites réellement exécute votre logique de redirection uniquement lorsque vous avez déterminé que l'URL ne fonctionne pas. existe dans le site actuel.

3
MrWhite