Beliebte mod_rewrite-Fehler

Published 2006-08-19, 18:21

Unter den Rewriteflags werden in der Dokumentation zu mod_rewrite 4 wichtige Punkte angesprochen. Dummerweise werden diese durch die blaue Box nicht etwa hervorgehoben, sondern rücken eher in den Hintergrund.

Dies ist schade, denn würde jeder Webmaster der mit mod_rewrite herumspielt diese Regeln durchlesen, gäbe es viel weniger Missverständnisse und Verwirrung was die Funktionsweise der RewriteRules angeht. Deshalb hier nochmal:

Note: Enabling rewrites in per-directory context

To enable the rewriting engine for per-directory configuration files, you need to set „RewriteEngine On“ in these files and „Options FollowSymLinks“ must be enabled. If your administrator has disabled override of FollowSymLinks for a user’s directory, then you cannot use the rewriting engine. This restriction is needed for security reasons.

Ganz beliebter Fehler Nutzung von mod_rewrite bei Hostern wie Hosteurope.

Note: Pattern matching in per-directory context

Never forget that Pattern is applied to a complete URL in per-server configuration files. However, in per-directory configuration files, the per-directory prefix (which always is the same for a specific directory) is automatically removed for the pattern matching and automatically added after the substitution has been done. This feature is essential for many sorts of rewriting – without this, you would always have to match the parent directory which is not always possible.

There is one exception: If a substitution string starts with „http://“, then the directory prefix will not be added, and an external redirect or proxy throughput (if flag P is used) is forced!

Wenn man das einmal verstanden hat, werden die Regeln viel klarer.

Note: Substitution of Absolute URLs

When you prefix a substitution field with http://thishost[:thisport], mod_rewrite will automatically strip that out. This auto-reduction on URLs with an implicit external redirect is most useful in combination with a mapping-function which generates the hostname part.

Remember: An unconditional external redirect to your own server will not work with the prefix http://thishost because of this feature. To achieve such a self-redirect, you have to use the R-flag.

Das versteh ich ehrlich gesagt selbst nich 😉

Note: Query String

The Pattern will not be matched against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. You can, however, create URLs in the substitution string, containing a query string part. Simply use a question mark inside the substitution string, to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine a new query string with an old one, use the [QSA] flag.

Probleme mit Queries gehören nach Verstehen dieses Absatzes zum Glück auch der Vergangenheit an.

Topic(s): Notiz, Technik 2 comments - :)

Diskussion zum Artikel

» Selbst kommentieren

  1. ( 1 )

    Der Teil:

    Note: Substitution of Absolute URLs

    When you prefix a substitution field with http://thishost%5B:thisport%5D, mod_rewrite will automatically strip that out. This auto-reduction on URLs with an implicit external redirect is most useful in combination with a mapping-function which generates the hostname part.

    Soll mE heissen:
    Wenn die rewrite rule als Ersatz-URL eine absolute URL inklusive http://… liefert, die auf den eigenen Host verweisen würde, wird aus dem externen Verweis (über http://) ein interner Verweis (beginnend mit dem Root-Ordner) erzeugt. Damit werden rewrites unterstützt, die den Hostname neu schreiben (a la no-www.org).

    So jedenfalls sehe ich das.

    Comment von Robert Wetzlmayr am 27. August 2006

  2. ( 2 )

    Ahh, macht Sinn. Ich hatte das „this“ vor „host“ und „port“ überlesen und mich gewundert. Danke!

    Comment von Jan am 27. August 2006

Selbst kommentieren

Trackback-URI, Kommentarfeed. XML-Feed





17 queries. 0,113 seconds.