URL Rewrite Module

Redirects zijn de verhuisberichten en omleidingsborden van het internet. Hiermee kan je voorkomen dat bezoekers voor niets op het oude adres op je site informatie zoeken die niet meer bestaat. Een redirect kan je op een pagina in stellen, of met een tool laten afhandelen.

Waarom zou je een adres van een pagina veranderen? Daar zijn genoeg redenen voor: je bedrijf krijgt een nieuwe naam, dan wil je ook een domeinnaam die daarbij hoort. Of je past de structuur aan van je site. Dan heb je dezelfde informatie op een andere adres binnen je huidige site. En soms blijken je adressen niet optimaal voor zoekmachines  (SEO). Een url voor een wasborstel binnen je webshop die er zo uit ziet: /index.aspx?Page=54&Article=987 doet het in zoekmachines slechter dan /webshop/schoonmaak/afwasborstel. Wij mensen kunnen het beter lezen en onthouden, maar ook zoekmachines kunnen de woorden herkennen en laten meetellen als iemand op afwas zoekt.

Anyway, na je verbetering komen er echter nog veel bezoekers op de oude url op zoek naar de informatie, via links op andere sites, via hun bladwijzers en via zoekmachines. De pagina bestaat niet meet, dus ze krijgen een 404 pagina. En dat is zonde, het liefst wil je ze doorsturen naar het nieuwe adres. Dat kan met redirects.

Tijdelijk of permanent?

Er zijn 2 soorten verhuisberichten met ieder hun eigen http response status code: de reactie van de server.

  • Http response status code 301 is de code voor een permanent verhuizing. Het oude adres geeft anders een 404 melding. Maar als er een 301 code wordt teruggegeven met een nieuwe adres, dan weet de zoekmachine dat hij de informatie voortaan aan het nieuwe adres moet koppelen.
  • Http response status code 302 is een tijdelijke omleiding. Dat kan handig zijn als je gedurende een korte tijd een speciale melding- of actiepagina wilt tonen. Bijvoorbeeld als een product tijdelijk niet leerbaar is. Maar als het product wel weer geleverd kan worden, wil je de standaard pagina weer op dat adres tonen. Bij de 302 code weet de zoekmachine dat je uiteindelijk weer je oorspronkelijke informatie op dit oude adres bereikbaar wilt houden.

Voor een gebruiker die een pagina opvraagt gebeurt dit nagenoeg ongemerkt: de browser krijg het nieuwe adres en vraagt daar de informatie op. Alleen als je oplet zie je dat de URL snel werd aangepast in de browser.

Een spider van een zoekmachine doet wat anders met de informatie: deze kan met het verhuisbericht de informatie aan de nieuwe URL koppelen. Zodat een nieuwe zoekopdracht naar die informatie ook naar de nieuwe URL wordt geleid.

Op een Microsoft Web Servers zijn dit 3 mogelijke oplossingen om de redirect in te stellen.

  • Puur in html. De pagina wordt opgehaald en de browser ziet instructies om naar het nieuwe adres te gaan via de header geef je metadata mee en -just in case- via een script in de body. En mocht het niet automatisch gaan, dan ziet de bezoeker ook een tekst met de link.
  <meta http-equiv="refresh" content="0;url=http://mijndomein.nl/nieuwadres/" />
 <meta http-equiv="Location" content="http://mijndomein.nl/nieuwadres/" />
 <meta name="robots" content="noindex, follow" />
</head>
 <body>

U wordt doorgeleid naar de nieuwe pagina.

 

window.location = “http://mijndomein.nl/nieuwadres/&#8221;;

  • Ook kan je het instellen in de programmeercode van pagina op de server. Dit kan bijvoorbeeld op een aspx-pagina. Voordat de pagina wordt verzonden voert de server de programmeercode eerst uit en daarin stat de opdracht hij alleen de status code en het nieuwe adres moet verzenden. De browser weet dan wat hij moet doen.
context.Response.Redirect("http://mijndomein.nl/nieuwadres/", false);
context.Response.StatusCode = 301;
context.Response.End();
  • De derde methode gaat niet via een pagina, maar met de webserver zelf. Daar kan je de URL Rewrite Module installeren. Hiermee kan je redirects in stellen: als pagina x wordt opgevraagd hoeft de server niet het bestandje te pakken, maar kan dan meteen de juiste code en nieuwe pagina terugsturen.

De Module

Hierbij ga ik  er vanuit dat je IIS (Express) hebt draaien op je machine. Microsoft heeft de informatie ook aardig overhoop gegooid, ik zie in ieder geval hier een download voor de Url Rewite Module.

De UrlRewriteModule in IIS

De UrlRewriteModule in IIS

Met de module zie je in je IIS server bij je site een extra optie. Hier kan je per pagina het oude en het nieuwe adressen opgeven, of je kan verwijzen naar een tekstbestandje met een lijst van verwijzingen. Wanneer het oude adres wordt opgevraagd wordt dit gecontroleerd.

In IIS kan je daarmee de Redirects als rewrite rules configureren. Ik laat het hier zien vanuit de code, want uiteindelijk worden de rewrite rules als configuratie instelling in de web-config opgeslagen – of in dit geval in een afsplitsing daarvan:

<system.webServer>
   <rewrite>
      <rules configSource="App_Config\RewriteRules.config" />
[...]

Vervolgens kan de providers instellen. Je kan hiermee voor iedere oude URL een verwijzing toevoegen naar de nieuwe lokatie toevoegen.In ons geval kregen we een Excel van de klant die ondoenlijk was om hier in te stellen. Onze informatie zetten we daarvoor in een tekstbestandje genaamd “redirectmappings” en maken gebruik van een FileMapProvider. Dit staat binnen de <rewrite> node, naast de configsource voor de rules.

<providers>
  <provider name="FileMapProvider" type="FileMapProvider, Microsoft.Web.Iis.Rewrite.Providers, Version=7.1.761.0, Culture=neutral, PublicKeyToken=0545b0627da60a5f">
    <settings>
      <add key="FilePath" value="{DOCUMENT_ROOT}\App_Data\redirectmappings.txt" />
      <add key="IgnoreCase" value="1" />
      <add key="Separator" value="," />
    </settings>
  </provider>
</providers>

Hier zie je de lokatie van de lijst en dat deze komma gescheiden is. {DOCUMENT_ROOT}

/webwinkel/huishoudelijk.aspx?artikel=654,/webshop/schoonmaak/afwasborstel

Het tekst documentje kan je dan ook ergens kwijt (bijv. onder App_data).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s