bit: Rewrite und seine Folgen

Beitrag lesen

Für den Aufruf /bild könnte ich mir folgendes vorstellen.
Der Server merkt dass "bild" ein Verzeichnis ist. Er setzt sich /bild/ als Ziel und wendet dann die Rule darauf an. Da kommt dann tatsächlich /bild/?name=bild raus.

Jau.

Aber wird die aufgerufene URL nicht ganz zu Beginn verarbeitet, noch bevor der Server anfängt zu suchen was er ausliefern muss und was er von der original URL alles kennt? Das verstehe ich nicht.
Und warum schickt er das dann als Redirect?

Standardmäßig ist bei Apache die DirectorySlash-Direktive aktiviert. Diese sorgt dafür, dass man Verzeichnisse auch ohne den eigentlich nötigen Slash am Ende der URI aufrufen kann oder, anders gesagt, "Apache must send a redirect to add the trailing slash to the URL".

Daher kommt das 301 zurück. Apache muss den Browser anweisen, die "richtige" URI anzufragen.

Du kannst das theoretisch mittels
DirectorySlash Off
deaktivieren, würd ich aber nicht empfehlen. Das ist schon ganz sinnvoll so.

Inwiefern sich das jetzt genau mit den Angaben für mod_rewrite vermischt, kann ich so direkt auch nicht nachvollziehen (womöglich wendet er erst die Rule an, erhält daraus den QueryString name=bild, und dann wird klar, dass eine andere Datei als angefordert ausgegeben werden muss, weswegen nicht /bild/page.php?name=bild herauskommt, was ich jetzt so erwartet hätte, sondern eben /bild/?name=bild. Aber da bin ich überfragt).