3 votes

Url Forwarding pour les itinéraires non valides ?

Je suis en train de mettre à jour un vieux site webforms asp.net. Je veux rendre les URLs plus jolies, donc j'utilise le système de routage, comme ceci :

void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("account settings",
        "settings/account/",
        "~/accountsettings.aspx");
}

Cela fonctionne bien. Urls comme mydomain.com/settings/account/ sont beaucoup plus agréables. Toutefois, la page est toujours accessible à partir de son emplacement physique, comme suit mydomain.com/accountsettings.aspx . J'aimerais transférer les demandes vers ces anciens formulaires vers mes nouveaux formulaires.

Quelle est la meilleure façon de procéder ? Existe-t-il une méthode simple que je puisse utiliser, comme avec RegisterRoutes ?

2voto

Jeff Points 290

Je pense que vous devrez indiquer au moteur de routage qu'il doit ignorer la route du fichier physique en utilisant IgnoreRoute :

routes.IgnoreRoute("accountsettings.aspx");

Vérifiez bien la syntaxe de IgnoreRoute car je ne me souviens pas si vous devez inclure le chemin relatif ou simplement le nom du fichier.

Une fois que cela fonctionne, vous pouvez piéger le 404 qu'il génère, éventuellement dans le gestionnaire d'erreur global dans global.asax, et rediriger si c'était le chemin demandé. Cet article de blog contient un exemple de la façon de piéger un 404 dans le gestionnaire d'erreur global : http://www.andornot.com/blog/post/Handling-404-errors-with-ASPNET.aspx

S'il s'agit d'un site public et que vous vous préoccupez du référencement, vous pouvez également envisager de préciser qu'il s'agit d'une redirection permanente en utilisant le code d'état http 301. Cela indiquera à Google et aux autres moteurs de recherche que l'ancienne page existe désormais au nouvel emplacement et que vous ne perdrez pas la valeur de cette page.

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X