migratie van MT naar WP (ii)

Gisteren, in het eerste deel van de migratie van MT naar WP hadden we het over de export/import van de weblog data. Gezien WP de zaken toch op een iets andere manier presenteert, was het noodzakelijk een aantal voorzorgen (in casu nazorgen) te nemen om linkrot te voorkomen.

2. link rot bestrijding

Niet alleen is er een (klein, maar vervelend) verschil in structurele aanpak bij WP, maar gezien ik toch in .htaccess moest prutsen, heb ik maar meteen de URLs voor de weblog helemaal aangepakt.

De URLs voor dit weblog werden vroeger samengesteld aan de hand van het POST ID, de maand, en het jaar. Voor mijn boekenlijstje met de boeken die ik had gelezen in september, een post gepubliceerd op 1 okotber, zag de URL er als volgt uit:

http://blog.volume12.net/2005/10/002452.htm

Om redenen die ik in een van mijn volgende postjes nog wel uit de doeken zal doen, heb ik de URL gewijzigd naar

http://blog.volume12.net/2452.htm

Dat betekent dat ik ervoor moet zorgen dat de oude links transparant op de nieuwe links uit komen. We editeren de .htaccess file op de server, en voegen het volgende lijntje toe:

  1. RedirectMatch permanent /200[1-5]/[0-1][0-9]/0*(.*).htm$ http://blog.volume12.net/$1.htm

Dat laat zich als volgt ontleden:

  • RedirectMatch
    Een apache directive. Apache is de webserver; redirect betekent dat iets naar iets anders wordt verwezen, en die ‘match‘ betekent dat er parameters aan te pas komen (meerdere opties).
  • permanent
    het is geen tijdelijke verwijzing, maar een permanente.
  • /200[1-5]/[0-1][0-9]/0*(.*).htm$
    Het gezochte; een beetje prutsen met regex. We willen elke URL die begint met een jaartal tussen 2001 en 2005 200[1-5], verder gezet wordt met een maand –dus van 01 tot 12; volgens de gebruikte code eigenlijk van 01 tot 19– [0-1][0-9], en eindigt met een POST ID dat begint met een aantal nullen 0* en dan nog iets anders (.*), en eindigend op .htm .htm$. Wat gezocht werd, is die ‘iets anders’ (.*).
  • http://blog.volume12.net/$1.htm
    Wat gezocht werd wordt gewijzigd naar de nieuwe URL; (.*) wordt gebruikt in $1.

Er zijn nog een paar andere redirects nodig, want ook de newsfeeds worden anders gelinked:

  1. Redirect permanent /index.xml http://blog.volume12.net/feed/
  2. Redirect permanent /index.rdf http://blog.volume12.net/feed/
  3. Redirect permanent /atom.xml http://blog.volume12.net/feed/

En tot slot zijn er nog de categorieën; WP vereist dat voor elke categorie een voorvoegsel komt, en eigenlijk lijkt me dat best logisch (kwestie van te diferentiëren tussen categorieën en tags). I.p.v. het
langere ‘categorie’ heb ik maar geopteerd voor ‘cat’ –in navolging van het andere 3-letterwoord ‘tag’; ‘c’ leek mij bij nader inzien toch maar wat te kort.

  1. Redirect permanent /gent/ http://blog.volume12.net/cat/gent/
  2. Redirect permanent /de_krant/ http://blog.volume12.net/cat/de-krant/
  3. Redirect permanent /transport/ http://blog.volume12.net/cat/vervoer/

Er zijn drie gevallen:

  1. Transparante overzetting: ‘/oud/’ naar ‘/cat/oud/’
  2. WP werkt met ‘-‘ als verbinding tussen woorden ipv ‘_’ zoals bij MT, dus ‘/oude_cat/’ naar ‘/cat/oude-cat/’
  3. Zeldzame volledige wijziging: ‘/oud/’ naar ‘/cat/nieuw/’

En we zijn ermee klaar. Of toch bijna. Want gezien ik niet met het standaard WP archief-formaat /%year%/%monthnum%/%day%/%postname%/ werk, maar met /%post_id%.htm, maakt WP van mijn ‘gedateerd’ archief /date/%year%/%monthnum%/%day%/%postname%/. Geen probleem: in de door WP aangebrachte wijzigingen in .htaccess halen we gewoon telkens die date/ eruit. Als je dit doet, moet je er wel voor zorgen dat die RedirectMatch van daarnet, boven de WP wijzigingen staat in .htaccess; anders krijgen we een infinite loop.

Totdaar. In een volgende aflevering hebben we het no over MT plugins, en daarmee wordt deze korte reeks waarschijnlijk beïndigd.