2010-12-15 30 views
1

ASP.net 4.0/IIS7.Alias ​​d'URL: réécriture, routage, incertain

Je veux "alias" un seul formulaire Web pour apparaître sous forme de plusieurs URLs sans extension. Étant donné une forme dans ma racine web appelé "mySite.com/ColorWebForm456.aspx":

  1. Je veux servi plusieurs noms, par exemple, mySite.com/Color, mySite.com/Colour, monSite .com/Colors, mySite.com/Coler, etc., sans créer de dossiers et de formulaires en double avec ces noms.

  2. Je ne veux jamais que mySite.com/ColorWebForm456.aspx s'affiche dans le navigateur, il doit s'afficher sous la forme mySite.com/Color, même si l'utilisateur l'acquiert d'une manière ou d'une autre et saisit cette adresse ~ .aspx exacte.

  3. Les variations expliqueront plusieurs variantes ou erreurs d'orthographe que les utilisateurs pourraient tenter - je ne les veux pas "corrigés", cependant. Ainsi, si un utilisateur tape mySite.com/Colour, l'URL n'est PAS réécrite sur mySite.com/Color, mais la même page est diffusée via ColorWebForm456.aspx comme "mySite.com/Colour".

J'ai vu tant d'articles sur ce que je ne suis même pas sûr où ce serait mieux gérée: dans Global.asax, IIS7 URL Rewrite, web.config, etc., et je suis pas même sûr que c'est techniquement un cas de réécriture d'url ou de routage ...?

Répondre

1

Vous pouvez y parvenir avec le routage ASP.NET 4 pour les formulaires Web, ou si vous utilisez MVC son disponible aussi: http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx

Sauf peut-être pour # 3; cela fonctionnerait, mais vous devriez déclarer explicitement les variations que vous voulez. Dans ce cas, la réécriture prend en charge la correspondance d'expressions régulières, ce qui est peut-être préférable pour ce que vous recherchez.

J'ai rencontré des problèmes lors de la configuration de la réécriture d'URL et de divers aspects des formulaires Web. Il y a une certaine configuration requise pour un module de réécriture potentiellement (j'aurais pu le faire aussi mal), où le routage d'URL est déjà intégré et géré.

HTH.

+0

Oui, j'ai vu cet article et l'ai essayé. Fonctionne localement pour moi (VS2010), mais échoue lorsqu'il est téléchargé sur notre service de cloud IIS 7.5, ce qui donne un 404.0 erreur, en particulier parce qu'il s'attend à ce qu'un répertoire nommé ~/Color existe, et ce n'est pas le cas. – brnwdrng

0

Si vous avez un moteur de réécriture disponible:

(en utilisant ISAPI Rewrite syntaxe .htaccess)

# redirect any requests for the filename back to the friendly URL 
RewriteRule ^/colorWebForm4567.aspx(.*) /Color$1 [NC,R=302] 

# rewrite /Color requests to the web form 
RewriteRule ^/(Color|Colour)/(.*) /ColorWebForm4567.aspx$2 
0

En note: Les moteurs de recherche ne l'aiment pas, si vous publiez du contenu sous différentes URL ("duplicate content"). Donc, ma recommandation serait de coller avec une URL (réécrite), pas plusieurs URL (réécrites) pour le même contenu.