Tips hur man designar urler till ASP.NET

Som ni vet väntar vi ivrigt på att IIS7 ska kunna gå att använda i produktions miljö. Där kommer det finns bättre stöd för att "skriva om" urler. De nuvarande alternativen är inte så vidare bra och saknaden av en standardiserad modell är jobbig.

Scott Guthrie ger oss dock några bra knep. En genomgång av de ISAPI-filter finns tillgängliga för IIS6. Även andra trix, bland annat Request.PathInfo som jag inte använt tidigare. Då kan man göra urler som ser ut så här.

http://www.webstore.com/products.aspx/Posters
http://www.webstore.com/products.aspx/DVDs
http://www.webstore.com/products.aspx/CD

Ändelsen ".aspx" är helt onödig och den tillför absolut ingenting för besökarens upplevelse. Okej vi som är utvecklare får snabbt reda på vilken teknik som körs, men hur väsentligt är det?

Ett snyggare och mer lättillgängligt variant skulle vara som i nästa exempel.

http://www.webstore.com/products/Posters
http://www.webstore.com/products/DVDs
http://www.webstore.com/products/CD

Men för att ange en sådan struktur måste man alltså använda ett ASAPI ISAPI-filter. Och det är inte alla webbhotell som erbjuder. Man kan ju givetvis skapa fysiska mappar och lägga en Default.aspx fil i varje. Men det orkar man inte..

Comments

Varför orkar man inte göra mappstrukturer?
En bra fråga Peter. Jag har gjort så på vissa projekt. En Default.aspx i varje mapp och som ärver av samma fil. Men det känns verkligen omständigt. Förutsätt att jag skulle göra så på den här bloggen, och jag skulle få till den url-struktur som jag eftersträvar. Då skulle jag behöva lägga in en mapp för varje månad. Typ: http://codeodyssey.se/blog/arkiv/2007/januari/"> http://codeodyssey.se/blog/arkiv/2007/januari/ http://codeodyssey.se/blog/arkiv/2007/februari/"> http://codeodyssey.se/blog/arkiv/2007/februari/ http://codeodyssey.se/blog/arkiv/2007/mars/"> http://codeodyssey.se/blog/arkiv/2007/mars/ Även för mina kategorier. http://codeodyssey.se/blog/kategori/aspnet/"> http://codeodyssey.se/blog/kategori/aspnet/ http://codeodyssey.se/blog/kategori/url-omskrivning/"> http://codeodyssey.se/blog/kategori/url-omskrivning/ http://codeodyssey.se/blog/kategori/tillganglighet/"> http://codeodyssey.se/blog/kategori/tillganglighet/ Sen vill jag även ha mer lättillgängliga urler till varje blogginlägg. Adressen till detta inlägget skulle kunna se ut så här: http://codeodyssey.se/blog/tips-hur-man-designar-urler/"> http://codeodyssey.se/blog/tips-hur-man-designar-urler/ Sen samma visa på min engelska domän. Många mappar blir det... Och alla går till samma dokument. Skulle aldrig funka för mig. Speciellt inte när man läst om hur andra plattformar som PHP-apache och RubyOnRails hanterar det så smidigt. blog.aspx_ Det är ändå 2007 och vi har RegEx-funktioner och finesser som kan ta hand om såna här manuella jobb.
[…] Jag har tidigare spånat lite på hur jag vill ha url:erna till denna bloggen […]

Menar du inte ett ISAPI flter inte ASAPI?

Annars kan man använda URLRewriter.NET som fungerar även för IIS 6 siter som körs i medium trust hos hosting providern. I UrlRewriter anger man helt enkelt bara med Regular Expressions hur omskrivningen ska ske. UrlRewriter.NET är open source och är därför gratis, inga ISAPI extensions måste installeras hos hosting providern, supernajs :-)

Hej Hans,

Givetvis ISAPI, har ändrat i texten nu.

URLRewriter.NET verkar bra, har testkört det för några år sen. Numera finns ju dock Routing inbyggt i .NET 3.5 (System.Web.Routing) och jag tycker att denna lösningen slår det mesta. Använder det här på bloggen sen nån månad tillbaks tillsammans med ASP.NET MVC. Funkar "ur boxen" på IIS7 och med lite handpåläggning på IIS6.