Dommerik van dienst

Pffff… ik zal het wel allemaal helemaal verkeerd doen, en dat is wat er gebeurt als een mens begint te prutsen in een programma dat hij niet kent, in een omgeving die hij niet gewoon is, met een taal die hij al geen vijf jaar meer boven gehaald heeft en zonder te weten wat of hoe.

De situatie: ik krijg een URL van de vorm “website/dir1/file1.html”. Ik heb een tabelletje in een database waar die URL eventueel verbonden wordt met een URL van de vorm “website/dir2/file2.html”. WordPress stuurt standaard zijn 404s naar een 404.php in de templatedirectory.

Ik dus naar die 404.php, en daar zet ik het volgende in:

<?php
 $fromURL=$_SERVER['REQUEST_URI'];
 global $wpdb;
 $redirs = $wpdb->get_results("select toURL from tblRedirects where fromURL = ‘$fromURL’");
 if (count($redirs)==1) {
  Header("location: ".$redirs[0]->toURL);
  exit;
 }
?> <?php get_header(); ?>
<h2>Error 404 - Not Found</h2>
<?php get_footer(); ?>

Allemaal proper en simpel, en dat werkt precies zoals het zou moeten, behalve dat het niet werkt. Dus de header wordt wel gezet, maar toch doet het niets. Als ik navigeer naar http://website/2005/10/apple_wast_witt.html, en ik bekijk de response headers, dan staat daar proper tussen

Location: http://website/2005/10/apple-wast-witter.html

…maar hij doet helemaal niets. Dedju, een gewone Response.Redirect is toch een heel eind gemakkelijker. :)

Zet ik in de plaats van de header stomweg

echo("<meta http-equiv = refresh content=0;url=".$redirs[0]->toURL.">");

dan werkt het voor de menselijke bezoeker wél zoals het zou moeten, maar niet voor Google natuurlijk. En niet voor Internet Explorer, die stomweg blijft staan op een 404. Bah. Verder zoeken.

Elders over misschien hetzelfde

5 commentaren op “Dommerik van dienst”

  1. 1. Inferis zei, op dinsdag 1 november 2005 om 11u24:

    Al eens geprobeerd om toch wat HTML terug te sturen, samen met de Location: header? Dus gewoon de pagina eigenlijk, met de extra header.

    Met andere woorden, zonder de exit() achter de header().

  2. 2. Michel Vuijlsteke zei, op dinsdag 1 november 2005 om 11u46:

    Yep, werkt niet.
    Maar ‘t is dus niet meer nodig :)

  3. 3. hettie zei, op maandag 21 november 2005 om 23u37:

    de grote van het vensterscherm komt niet meer op het scherm van big money de luxe hoe kan dat?

  4. 4. Luc V. zei, op dinsdag 22 november 2005 om 12u42:

    Dat is inderdaad een goeie vraag.
    Ik zit daar al een paar jaar mee, eerlijk gezegd.

  5. 5. Michel Vuijlsteke zei, op dinsdag 22 november 2005 om 12u46:

    Yep, die big money de luxe: één van mijn favoriete schermen.

Zeg uw gedacht

Je kan deze HTML-tags gebruiken: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> . Ook zo'n beeldje naast uw naam? Rep u naar Gravatar.com!

Navigatie

Vorige entry: Waarom geen MovableType?

Volgende entry: Oh man…

» homepagina, archief

<insert standard disclaimer>

Alles wat hier staat is mijn eigen opinie. Het wordt niet nagelezen of goedgekeurd door mijn werkgever voor het on-line komt, en ik bied geen enkele garantie voor kwaliteit of correctheid.

Mijn werkgever is het niet noodzakelijk eens met wat ik schrijf, en het spreekt vanzelf dat hij dan ook op geen enkele wijze aansprakelijk kan zijn voor wat ik hier publiceer.