Archief - Redirect met htaccess problemen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Fransz

Legacy Member
De oude website heeft oude URLs die niet meer actief zijn (page not found). Nu moeten deze oude URLs redirect worden naar de nieuwe. Dit lijkt niet te lukken met volgend .htaccess bestand

Wat is er fout aub?

PHP:
Redirect 301 /News.aspx?language=nl http://www.nieuwesite.be/index.html


Extra regels hiervoor zoals

PHP:
Options +FollowSymlinks
RewriteEngine On

maken geen verschil

Scooby Doo

Legacy Member
Lijkt op het eerste zicht te kloppen. Heb je een link naar de site om grondiger te inspecteren?

Fransz

Legacy Member
Dat mag ik niet doen. De oude site was een asp site. Die pagina's bestaan niet meer.

De nieuwe site is gewoon html (geen cms) met een .htaccess bestand in de root

Ik denk dat het aan die tekens ligt zoals ? en =

Ik ga die eens vervangen door de char code

bealzebub

Legacy Member
Via PM van Fransz gekregen, maar bij deze aan dit topic toegevoegd zodat het geen openstaande vraag blijft en voor iedereen nuttig kan zijn.

Fransz zei:
Dit is de lijst van de oude URLs (die nu niet meer bestaan en moeten redirect worden naar de nieuwe):

Code:
Redirect 303 /Default.aspx?language=nl http://www.een-domein.be/index.html
Redirect 303 /Contact.aspx?language=nl http://www.een-domein.be/contact.php
Redirect 303 /News.aspx?language=nl http://www.een-domein.be/index.html
Redirect 303 /Inforequest.aspx?language=nl http://www.een-domein.be/contact.php
Redirect 303 /PrivacyStatement.aspx?language=nl http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=547&language=nl&page=Aanleggen%20terrassen http://www.een-domein.be/terrassen.html
Redirect 303 /InfoDetail.aspx?infopageId=548&language=nl&page=Aanleggen%20opritten http://www.een-domein.be/opritten.html
Redirect 303 /InfoDetail.aspx?infopageId=549&language=nl&page=Aanleggen%20parkings http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=562&language=nl&page=Afsluitingen%20en%20omheiningen http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=577&language=nl&page=Tuinhuizen%20en%20eiken%20bijgebouwen http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=672&language=nl&page=Vloertegels http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=673&language=nl&page=Wandtegels http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=674&language=nl&page=Terrastegels http://www.een-domein.be/terrassen.html
Redirect 303 /InfoDetail.aspx?infopageId=675&language=nl&page=Keukentegels http://www.een-domein.be/index.html
Redirect 303 /InfoDetail.aspx?infopageId=676&language=nl&page=Badkamertegels http://www.een-domein.be/index.html

Zoals vermeld in het topic, krijg ik het niet geklaard met .htaccess

De fouten zijn dus:
  • Geen slashes aan het begin van je condition
  • Als de rewrite afhangt van een query parameter, moet je RewriteCond (rewrite condition) vooraf gebruiken
  • In je target gedeelte is het niet nodig de volledige domein URL op te nemen als die toch hetzelfde is als het oude domein

De verbeteringen zijn:
  • Extrapoleren van generische delen en regels aan de hand daarvan opstellen ipv constant letterlijke matching te proberen
  • Case insensitive matching
  • Via regex het aantal regels beperken
  • Permanent redirect gebruiken (voor search engines en browser caching)
  • Enkel de uitzonderingen definiëren en als laatste regel de rest van de ASP pagina's opvangen en naar de root redirecten

Alle doorgegeven URLs zijn te testen op htaccess tester

Code:
RewriteEngine On
# Als van de vorm Contact.aspx of Inforequest.aspx, ga naar contact.php
# Het vraagteken op het einde zorgt dat de query parameters (?language=nl) weggegooid worden in de rewrite
# NC = No Case (niet hoofdlettergevoelig, L = last (stop ermee als voorwaarde voldaan), R=301 = permanent redirect
RewriteRule ^(Contact|Inforequest)\.aspx.*$     /contact.php?     [R=301,L,NC]

# Alle InfoDetail pagina's waar we een "page" query parameter hebben die aan bepaalde voorwaarden voldoet
# Enkel diegene die niet naar index.html moeten redirecten (default naar index.html gans op t laatste)
RewriteCond %{QUERY_STRING}          ^.*page=(Aanleggen\sterrassen|Terrastegels).*$ [NC]
RewriteRule ^InfoDetail\.aspx.*$     /terrassen.html?     [R=301,L,NC]

RewriteCond %{QUERY_STRING}          ^.*page=(Aanleggen\sopritten).*$ [NC]
RewriteRule ^InfoDetail\.aspx.*$     /opritten.html?      [R=301,L,NC]

# En hieronder de default voor alle andere .aspx pagina's
RewriteRule ^.*\.aspx.*$     /?     [R=301,L,NC]
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan