Dez 23 2009

Apache: kein mod_rewrite bei existierender Datei

Veröffentlicht by . Filed under: PHP

Ich bin mir sicher, eines der großen On-Page-SEO-Themen im nächsten Jahr wird sein, wie man die Auslieferung einer Seite beschleunigen kann. Es sollte geradezu offensichtlich sein, dass man am meisten in PHP-Programmen sparen kann, wenn man PHP erst gar nicht aufruft. Deshalb ist eine mögliche Idee, die generierten Seiten mittels PHP rausschreiben zu lassen und dann diese direkt auszuliefern.

Das möchte ich jetzt an einigen Stellen auch bei meinen Framework-Modulen forcieren. Da ich aber sehr stark auf mod_rewrite gesetzt habe, stellt sich die Frage, wie ich das am einfachsten bewältigen kann. Die Antwort liefert mir dieser Code:


RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteRule ^ %{DOCUMENT_ROOT}%{REQUEST_URI} [L]

Der macht nichts anderes wie dem Apache zu sagen: falls es eine echte Datei mit diesem Namen gibt, dann leite nicht auf andere Dateien – in meinem Fall PHP-Dateien – um. Sehr nützlich!

3 responses so far

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
^

3 responses so far

  1. Christian Schornon 23 Dez 2009 at 11:44 pm

    Ich finde in diesem Fall die negativen Tests einfacher:

    RewriteCond %{REQUEST_FILENAME} ! -f
    RewriteCond %{REQUEST_FILENAME} ! -d
    RewriteCond %{REQUEST_FILENAME} ! -l
    RewriteRule

    Denn 1. ist REQUEST_FILENAME schon durch alle vorheringen Ersetzungen gelaufen, also funktioniert das Ganze auch mit Aliasen, anderen RewriteRules etc., 2. sind damit auch Verzeichnisse und symbolische Links abgedeckt (Die zweite oder dritte Cond können je nach Gusto auch weggelassen werden).

  2. Christian Schornon 23 Dez 2009 at 11:47 pm

    Da hat’s mir die Formatierung zerschossen … die letzte Zeile sollte lauten:

    RewriteRule [wie auch immer ich zum skript komme]

    Nur hatte ich spitze Klammern verwendet (d’oh).

  3. Mathias Bankon 24 Dez 2009 at 11:44 am

    Hm, das ist natürlich auch eine schöne Idee, weil dann könnte ich das auf ganz spezielle Fälle einfacher eingrenzen. Danke für den Hinweis.

Trackback URI | Comments RSS

Hinterlasse eine Antwort