Skrive om adresser (mod_rewrite) med ASP.NET
Å bruke så kalte “pretty urls” har allerede blitt vanligere, for å øke brukervennligheten i applikasjonene. Det kan også ha visse fordeler for hjemmesidens sjanser til god plassering i søkemotoren.
For våre UNIX-servere er det veldig lett å via mod_rewrite skrive om adressene, men de som foretrekker Windows og ASP.NET ha ikke samme mulighet å bruke mod_rewrite. Det finnes derimot et annet alternativ som er lett å bruke og krever ikke noen ekstra installasjon på serveren UrlRewriter.NET.
Hvordan bruker man UrlRewriter.NET?
1. [Last ned] og pakk opp
2. Legg til en referanse til Intelligencia.UrlRewriter.dll som du også burde plassere på din prosjekts “bin” katalog.
3. Åpne din web.config fil
4. Legg til følgende
<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 er nå klar for å skrive om adressene! Nedenfor følger noen eksempler.
Vår applikasjon er en netthandel som selger forskjellige typer media. I dag har vi en side som lister alle produkter i en kategori på følgende måte minnetthandel.no/produkter.aspx? kategori=dvd dette vil vi forkorte til minnetthandel.no/dvd.aspx
Åpne din web.config fil hvor du har lagt til UrlRewriter.NET og legg til følgende regel:
<rewriter> <rewrite url="~/dvd.aspx" to="~/produkter.aspx?kategori=dvd" /> </rewriter>
Dette virker utmerket om man har en mindre mengde kategorier. Men om man har mange kategorier så blir det raskt tungvint å legge til hver nye kategori manuelt. Med hjelp av et regulært uttrykk kan vi generalisere regelen i eksempelet ovenfor.
<rewriter> <rewrite url="~/shop/(.+).aspx" to="~/produkter.aspx?kategori=$1" /> </rewriter>
Dette eksempelet skriver om flere varianter av minnetthandel.no/shop/dvd.aspx til minnetthandel.se/produkter.aspx?kategori=dvd.
Perfekt, da kan vi vise de forskjellige kategoriene. Det vill være nyttig å kunne vise en sammensetting av vert enkelt produkt. Dette gjøres ved å utvide regelen ovenfor med et annet argument.
<rewriter> <rewrite url="~/shop/(.+)/(.+).aspx" to="~/produkter.aspx?kategori=$1&produkt=$2" /> </rewriter>
På den måten kan dine kunder skrive f.eks minnetthandel.no/shop/dvd/terminator2.aspx som skrives om til minnetthandel.no/produkter.aspx?kategori=dvd&produkt=terminator2.
Det r selvfølgelig mulig å utvide eksempelet i all uendelighet om man kategoriserer sine produkter enda dypere.