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----escape_autolink_uri:ec32f0e44735807244628322d406ebe5----, 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 by 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 by Jan am 27. August 2006

Sorry, the comment form is closed at this time.

21 queries. 0,183 seconds.