Skriv om adresser (mod_rewrite) med ASP.NET
Att använda så kallade ”pretty urls” har blivit allt vanligare, för att öka
användarvänligheten i applikationer. Det kan även ha vissa fördelar för hemsidans
chanser till en bra placering i sökmotorer.
För våra UNIX-servrar är det väldigt enkelt att via mod_rewrite skriva om adresser
men de som föredrar Windows och ASP.NET har inte samma möjlighet att använda
mod_rewrite. Det finns dock ett vettigt alternativ som är enkelt och inte kräver
någon extra installation på servern UrlRewriter.NET.
Hur använder man UrlRewriter.NET?
1. [Ladda ner] och packa upp
2. Lägg till en referens till Intelligencia.UrlRewriter.dll som du även bör
placerar i ditt projekts ”bin” katalog.
3. Öpnna din web.config fil
4. Lägg till följande
<configSections> <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration. RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" /> </configSections>
<system.web> <httpModules> <add type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" name="UrlRewriter" /> </httpModules> </system.web>
Du är nu redo att börja skriva om adresser! Nedan följer några exempel.
Vår applikation är en webshop som säljer olika typer av media. I dagsläget så har vi en
sida som listar alla produkter i en kategori på följande sätt: minwebshop.se/produkter.aspx?kategori=dvd
detta vill vi förkorta till minwebshop.se/dvd.aspx.
Öppna din web.config fil där du har lagt till UrlRewriter.NET och lägg till följande regel:
<rewriter> <rewrite url="~/dvd.aspx" to="~/produkter.aspx?kategori=dvd" /> </rewriter>
Detta fungerar umtärkt om man har en mindre mängd kategorier. Men har man många kategorier så
blir det snabbt otympligt att lägga till varje ny kategori manuellt. Med hjälp av ett
reguljärt uttryck kan vi generalisera regeln i exemplet ovan.
<rewriter> <rewrite url="~/shop/(.+).aspx" to="~/produkter.aspx?kategori=$1" /> </rewriter>
Detta exempel skriver om samtliga varianter av minwebshop.se/shop/dvd.aspx till
minwebshop.se/produkter.aspx?kategori=dvd.
Perfekt, då kan vi visa de olika kategorierna. Det vore dock användbart att även kunna visa en sammanfattning
av varje enskild produkt. Detta kan vi göra genom att utöka regeln ovan med ett till argument.
<rewriter> <rewrite url="~/shop/(.+)/(.+).aspx" to="~/produkter.aspx?kategori=$1&produkt=$2" /> </rewriter>
På detta sätt kan dina kunder skriva t.ex. minwebshop.se/shop/dvd/terminator2.aspx som skrivs om till
minwebshop.se/produkter.aspx?kategori=dvd&produkt=terminator2.
Det går självklart att utöka exemplet i all oändlighet om man kategorisera sina produkter ännu djupare.