Ein freundliches Hallo! in die Runde.
Es ist wieder einmal Zeit, auf der Website zu renovieren. Dabei möchte ich auch das Dickicht mit den URLs etwas lichten. Da meine Website relativ eng mit Print und mündlichen Verweisen verknüpft ist, - und Zahl- und Sonderzeichen-Angereichertes nicht nur im Comic mit Flüchen in Verbindung gebracht wird -, möchte ich gerne wieder mehr Lesbares verwenden.
Im Moment habe ich URLs im Stil von
example.com/index.php?p=impressum
und würde lieber
example.com/impressum
verwenden. Mir ist auch nicht ganz einichtig, warum es für den User wichtig sein sollte, zu wissen, dass die ausgelieferte HTML-Seite beispielsweise von einem PHP-Skript stammt (was sich zudem einfach ändern lässt).
Mein erster Gedanke war, das in der .htaccess zu regeln, wobei mir zwei Möglichkeiten eingefallen sind.
Möglichkeit 1 - Redirect
Redirect /impressum /index.php?p=impressum
Sollte das für jede einzelne Seite geschrieben werden müssen, wäre das verschmerzbar - so viele Seiten sind es nicht. Aber: in Einzelfällen habe ich es mit GET (also im URL sichtbaren Parametern) oder POST (aus Formularen) zu tun. GET ist kein Problem, POST wird allerdings ignoriert.
Möglichkeit 2 - Rewrite
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?p=$1 [L]
Das würde aus example.com/impressum
ein example.com/index.php?p=impressum
erstellen.
Und aus jeder anderen Anfrage an meinserver.de ebenfalls - was dann doch wieder nicht sein soll, da es auch Aufrufe gibt, die nicht dem "schönen" neuen Muster folgen sollen. Dafür gibt es RewriteCond, also kein echtes Problem.
Eines allerdings stört mich: Anstelle des "schönen" URL wird im Browser des Users nach dem Ausliefern wieder der "verfluchte" URL angezeigt.
Frage: Gibt es eine Möglichkeit, das zu verhindern?
Es kann auch sein, dass ich da ganz grundsätzlich falsch liege - das Mitliefern eines Statuscodes beim Redirect weist darauf hin. Wie würdet ihr das angehen, wenn ihr dem externen Nutzer einen anderen URL präsentieren wollt, als er intern verarbeitet wird?
[edit 2021-02-12 TS, Beispieldomain]