Question

Je voulais savoir s'il existait une solution utilisant IIS6 pour une application permettant de supprimer le texte default.aspx de l'URL. Ainsi, par exemple, si un utilisateur clique sur:

www.website.com/default.aspx

le navigateur n'affiche que:

www.website.com /

Quoi qu'il arrive. C’est juste pour le référencement.

J'utilise déjà UrlRewriting.NET pour certaines réécritures dans mon application, mais je ne suis pas aussi intelligent que de créer une règle pour cela.

Toute aide est très appréciée.

Merci. Jose

Était-ce utile?

La solution

Si vous souhaitez réécrire une URL, il vous suffit de vous assurer que vos liens pointent vers la bonne URL.

Si vous ne corrigez pas vos liens, il appartient au navigateur de décider s'il souhaite afficher le lien demandé.

Si vous souhaitez vraiment faire un travail louche, vous pouvez utiliser du javascript pour que la barre d'adresse du navigateur affiche ce que vous voulez, même si elle est invalide.

Autres conseils

Je pense que ScottGu a déjà le sujet de la réécriture dans ASP.NET couvert: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net. aspx .

Il couvre des choses telles que:

  • Réécriture à l'aide de UrlRewriter.net, ISAPI Rewrite
  • Trucs ASP.NET, publication (en tapant sur la version conviviale de l'URL)

Avec votre problème, je pense que vous devez utiliser une combinaison de, ne jamais relier à "default.aspx", c.-à-d. Lien SEULEMENT vers '/'. Utilisez ensuite le fichier de navigateur Form Postback de Scott pour vous assurer que les postbacks atteignent toujours la même version conviviale de l'URL.

La redirection de 'default.aspx' vers '/', qui est ensuite desservie par 'default.aspx', me semble être une recette pour un désastre. Fixez simplement vos liens pour vous assurer de ne jamais vous retrouver explicitement sur 'default.aspx'.

Je pense que le moyen le plus simple de modifier l'index des résultats de la recherche (en supposant qu'il connaisse HTTP 301) est d'écrire une petite fonction dans le Page_Load de votre default.aspx qui redirige le navigateur à l'aide d'un 301 déplacé de façon permanente (ou 302 déplacé de façon temporaire).

void Page_Load(...) {

    if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
       Response.StatusCode = 301;
       Response.StatusDescription = "Moved Permanently";
       Response.Headers.Add("Location", "/");
       HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
    }

    // do normal stuff here
}

Si default.aspx est défini comme document par défaut à servir dans IIS, et que tous les liens de votre site interne contiennent des URL sans default.aspx, je pense que cela devrait faire l'affaire.

Bien que l'utilisateur puisse toujours saisir default.aspx , les robots des moteurs de recherche doivent simplement choisir l'URL la plus conviviale parmi les attributs de votre lien href.

Pour ce faire, utilisez Application_BeginRequest dans la classe publique Global: System.Web.HttpApplication et vérifiez HttpContext.Current.Request.URL pour default.aspx, puis utilisez HttpContext.Current.Response.Redirect à partir de là. si vous le trouvez.

L’inconvénient est que les redirections ne sont pas toujours aussi importantes et cela ne fonctionnera pas si vous publiez des données sur cette page default.aspx. Mais vous ne pouvez pas simplement inciter le navigateur à afficher une autre URL, bien que vous puissiez dire à ASP.NET de servir la page de votre choix pour toute demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top