Felix234: Problem mit mod_rewrite Conditions

Hallo zusammen,

ich sitze seit einiger Zeit an einem mod_rewrite-Problem und bekomme es einfach nicht hin:

Alle Urls, die nicht mit /de oder /en/ anfangen, sollen umgeschrieben werden:

RewriteCond %1 !^de/ [NC]
RewriteCond %1 !^en/ [NC]
RewriteRule ^(.+)$ http://irgendwas.de/de/$1 [L,R]

Kann mir hier bitte jemand weiterhelfen?

Grüße,
Felix

  1. Hi Felix234!

    RewriteCond %1 !^de/ [NC]
    RewriteCond %1 !^en/ [NC]
    RewriteRule ^(.+)$ http://irgendwas.de/de/$1 [L,R]

    %[1-99] wird genutzt um Backreferences im Suchmuster der RewriteCond zu nutzen. Deine RewriteCond trifft natürlich nie zu, da %1 hier immer leer sein wird, da es keinen Suchstring gibt, auf den es sich beziehen könnte (du hast %1 selbst als Suchstring gesetzt). Stattdessen solltest du %{REQUEST_URI} nutzen:

    RewriteCond %{REQUEST_URI} !^/de/ [NC]
    RewriteCond %{REQUEST_URI} !^/en/ [NC]
    RewriteRule ^(.+)$ http://irgendwas.de/de/$1 [L,R]

    (Achtung, habe noch Slashes hinzugefügt)

    Mehr zur Syntax: mod_rewrite: RewriteCond

    tschau
    ichen

    --
    Halte deine Umwelt sauber!
    1. Danke, hat einwandfrei geklappt. Jetzt ist mir auch klar, warum es gescheitert ist.

      Gruß,
      Felix

      Hi Felix234!

      RewriteCond %1 !^de/ [NC]
      RewriteCond %1 !^en/ [NC]
      RewriteRule ^(.+)$ http://irgendwas.de/de/$1 [L,R]

      %[1-99] wird genutzt um Backreferences im Suchmuster der RewriteCond zu nutzen. Deine RewriteCond trifft natürlich nie zu, da %1 hier immer leer sein wird, da es keinen Suchstring gibt, auf den es sich beziehen könnte (du hast %1 selbst als Suchstring gesetzt). Stattdessen solltest du %{REQUEST_URI} nutzen:

      RewriteCond %{REQUEST_URI} !^/de/ [NC]
      RewriteCond %{REQUEST_URI} !^/en/ [NC]
      RewriteRule ^(.+)$ http://irgendwas.de/de/$1 [L,R]

      (Achtung, habe noch Slashes hinzugefügt)

      Mehr zur Syntax: mod_rewrite: RewriteCond

      tschau
      ichen