Hallo wahsaga,
Als mir halbwegs einleuchtende Erklärung finde ich in der Doku nur:
"For instance, sub-requests occur internally in Apache when mod_include tries to find out information about possible directory default files (index.xxx)."
Wenn das also ein interner Sub-Request wäre - wo genau ist der Unterschied zum internen Redirect?
Liegt er darin, dass der Redirect erneut in das Processing der RewriteRules etc. eingespeist wird, und der Sub-Request nicht ...?
Interner Redirect -> Der Apache bekommt eine neue intere URL (bzw. nur den Teil davon, der nach dem Host/Port-Teil kommt) und startet die ganze Verarbeitungsmaschinerie neu für diesen Request. Anders ausgedrückt: ein Interner Redirect ist für den Apachen nichts anderes, als ob der Benutzer die Ziel-URL des Redirects selbst eingegeben hätte *plus* zuästzlich ein paar Umgebungsvariablen (REDIRECT_*). Stell Dir das ganze so vor:
while (1) {
verarbeite_url(url,neuerurl,daten);
if (daten) {
schreibe(daten);
break;
}
url = neuerurl;
}
Das stimmt zwar so absolut nicht ;-), macht aber die Arbeitsweise des Apachen vielleicht verständlicher. Bei mod_rewrite wird halt (wenn der Apache tatsächlich exakt nach obigem Schema funktionieren _würde_) einfach ein neuer URL zurückgegeben und keine Daten -> die Schleife wird nochmal ausgeführt, es wird nicht (!) nochmal eine Funktion im *inneren* durch mod_rewrite aufgerufen, die dann das Ergebnis der Umschreibung als Daten zurückgibt.
Interner Subrequest -> Wenn Du bei mod_include (SSI) <!--#include virtual="/relativer-url"--> oder bei PHP (als Modul) virtual('/relativer-url'); machst. Dann ist der alte Request ja noch am Laufen (d.h. er ist *nicht* abgeschlossen und es heißt "du findest die Antwort unter der URL ...") und der Apache macht zusätzlich noch einen Subrequest und gibt dem Modul (PHP, mod_include, ...) den Inhalt des ausgeführten Subrequests zurück, damit das Modul etwas damit anfangen kann (in beiden Fällen primär erstmal ausgeben, in PHP kann man mit Output Buffering allerdings noch andere Dinge mit anstellen, andere Module machen vielleicht nochmal was anderes damit).
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup