ChrisB: Modrewrite vom Root in ein Unterverzeichnis

Beitrag lesen

Hi,

http://dj-tut.de/z_test/selfhtml/htaccess -- So sieht meine Komplette .htaccess aus
Ich weiß nicht warum, aber ohne einen Flag am Ende der Rewriterule funktioniert bei mir das Rewriten nicht.

Kann dir spontan auch nicht sagen, warum. Die Logs könnten vielleicht weitere Rückschlüsse zulassen, insb. das RewriteLog (muss in der httpd.conf aktiviert werden, deshalb am besten auf einem lokalen Rechner zu testen).

Nein, es fügt wie Sven sagte nur den originalen Querystring wieder an - das kann man dann benutzen, wenn man einen (evtl.) original vorhandenen solchen lediglich erweitern möchte. Per Default, ohne dieses Flag, wird er nämlich "weggeschmissen".

Das verstehe ich immer noch nicht, könntest du mir das Bitte Anhand eines Beispiels erklären?

RewriteRule ^highlight$  /css/highlight.php [QSA] # wo muss hier der Querystring stehen für dieses Flag?

Er muss in dem Request vorhanden sein, der den Server erreicht hat.

Nehmen wir an, du willst eine Anfrage nach
/NichtExistentesDokument.htm
umschreiben lassen auf
/index.php?seitenname=NichtExistentesDokument.htm

Mit sowas wie
RewriteRule ^(.*)$ index.php?seitenname=$1
bekommst du im Querystring immer nur den einen Parameter seitenname übermittelt.

Vielleicht willst du aber auch Aufrufe wie
/NichtExistentesDokument.htm?blah=blubb&laber=quassel
zulassen, um über diese Parameter scriptintern den weiteren Ablauf zu steuern. Diese Parameter würden dir bei obiger RewriteRule verloren gehen, du würdest nach wie vor nur seitenname=NichtExistentesDokument.htm bekommen.

Wenn du jetzt das Flag [QSA] verwendest, dann wird der originale QueryString beibehalten, d.h. dein Request wird letztlich auf
/index.php?seitenname=NichtExistentesDokument.htm&blah=blubb&laber=quassel
umgeschrieben, so dass du auch diese Parameter in deinem auswertenden Script noch zur Verfügung hast.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.