Ich sende keinen 301 aus.
Definitionssache :)
PHP sendet bei mir folgendes:
Gibt man das ein, liest PHP die id ein, vergleicht sie mit der Datenbank an möglichen zahlen und leitet dann per Header('Location: ..') an die lange neue Adresse weiter.
Also doch eine Weiterleitung - von PHP von dir ;)
Wobei das auch das Problem erklären könnte. Eine bessere Lösung viel mir aber nicht ein.
Du meinst "fiel" :) - aber wenn du URLs schönen willst, gibt es auch Möglichkeiten ohne Redirects - wenn du index.php?id=12 aufrufst, kannst du in einem Script auch intern deine parameter setzen, ohne gleich umleiten zu müssen.