Bla: mod_rewrite-Anfrage auf tatsächliche Datei

Beitrag lesen

  1. Woher soll ein Besucher wissen, was du innerhalb deines Servers zusammenbastelst?
    Von import/nutzer
    auf import.php?nutzer=nutzer zu schließen, erfordert wenig Geschick.

IMHO setzt du da zu viel freie Zeit voraus.

"Wenn der Nutzer nicht über die verbergende URL /index hierhergekommen ist, dann gib einen 404 aus."

RewriteEngine on
RewriteBase /

RewriteRule bla index.php?bla [L]

RewriteCond %{THE_REQUEST} index.php
RewriteRule index.php - [F]

In THE_REQUEST ist die komplette und vor allen Dingen unveränderte erste Zeile der Anfrage des Browsers enthalten. RewriteCond kennt zwar auch die eigentlich etwas treffendere Variable REQUEST_URI, deren Inhalt wird aber durch mod_rewrite beeinflusst, ist also im erwünschten Fall zuerst "bla" und beim durch RewriteRule 1 ausgelösten zweiten Durchlauf "index.php?bla".

Einen 404 kannst du mit mod_rewrite nicht ausgeben, zur Auswahl an externen Meldungen stehen nur 403 (Zugriff verboten, [F]), 410 (Entschwunden, [G]) oder die Weiterleitung mit R. Du könntest jedoch ein PHP-Skript erstellen, das seinerseits per 'header("HTTP/1.0 404");' den gewünschten Fehler ausgibt, und dieses mittels 'RewriteRule index.php fehler404.php [L]' (statt [F] in RewriteRule 2) ansteuern.