gast: mod_rewrite

Hi,

kann mir jemand helfen: Meine Absicht ist es, dass wenn jemand z.B. www.domain.net/de/foo/bar.php eingibt, dass die Anfrage dann auf index.php?lang=de&folder=foo&file=bar "umgeleitet" wird.

Ich habe schon vieles ausprobiert, es wird aber immer ein Internal Server Error ausgegeben. Was ist also hier falsch:

RewriteEngine on
RewriteBase /ordner1
RewriteRule ^/ordner1/(.*)/(.*).php$ /ordner1/index.php?lang=$1&folder=$2&file=$3

vielen Dank für eure Hilfe

  1. Hallo gast,

    Ich habe schon vieles ausprobiert, es wird aber immer ein Internal Server Error ausgegeben.

    Was steht im error-log?

    Was ist also hier falsch:

    RewriteEngine on
    RewriteBase /ordner1
    RewriteRule ^/ordner1/(.*)/(.*).php$ /ordner1/index.php?lang=$1&folder=$2&file=$3

    Das hier bewirkt zwar nicht das, was Du willst, jedoch produziert es auch keinen Internal Server Error bei mir.

    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*)/(.*)/(.*).php$ index.php?lang=$1&folder=$2&file=$3

    sollte das erreichen, was Du willst. Eventuell würde ich noch

    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*)/(.*)/(.*).php$ index.php?lang=$1&folder=$2&file=$3 [QSA]

    machen, damit aufrufe wie

    http://www.invalid/de/foo/bar.php?hallo=ciao

    auch funktionieren und in

    index.php?lang=de&folder=foo&file=bar&hallo=ciao umgewandelt werden.

    (im ersten fall würde lediglich index.php?lang=de&folder=foo&file=bar rauskommen)

    Viele Grüße,
    Christian

    1. Hi,

      erst einmal vielen Dank für die schnelle Hilfe. Ich habe deine Version ausprobiert und sie funktioniert wunderbar - meistens. Manchmal dauert es ewig (bis zu über 1 min), bis der Server die Seite ausgibt. Woran liegt das? Kann es daran liegen, dass er die Bilder nicht findet, die auf der Seite eigentlich angezeigt werden sollten? Ich habe hier mal das mod-rewrite-error-log (RewriteLogLevel 8) nach einem einmaligen Aufruf von "localhost/ordner1/verbindungen/a.php". Ist zwar ein bisschen lang, habe aber schon unwichtiges weggekürzt:

      --
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/a.php -> de/verbindungen/a.php
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/a.php'
      (2) [per-dir d:/files/htdocs/ordner1/] rewrite de/verbindungen/a.php -> /ordner1/index.php?lang=de&folder=verbindungen&file=a
      (3) split uri=/ordner1/index.php?lang=de&folder=verbindungen&file=a -> uri=/ordner1/index.php, args=lang=de&folder=verbindungen&file=a
      (2) [per-dir d:/files/htdocs/ordner1/] trying to replace prefix d:/files/htdocs/ordner1/ with /ordner1/
      (1) [per-dir d:/files/htdocs/ordner1/] internal redirect with /ordner1/index.php [INTERNAL REDIRECT]
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/index.php -> index.php
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'index.php'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/index.php
      (3) [per-dir d:/files/htdocs/ordner1/] add path-info postfix: d:/files/htdocs/ordner1/de/verbindungen/bilder -> d:/files/htdocs/ordner1/de/verbindungen/bilder/system/lo_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/bilder/system/lo_big.gif -> de/verbindungen/bilder/system/lo_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/bilder/system/lo_big.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/de/verbindungen/bilder
      (3) [per-dir d:/files/htdocs/ordner1/] add path-info postfix: d:/files/htdocs/ordner1/de/verbindungen/bilder -> d:/files/htdocs/ordner1/de/verbindungen/bilder/system/white_grey.gif
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/bilder/system/white_grey.gif -> de/verbindungen/bilder/system/white_grey.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/bilder/system/white_grey.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/de/verbindungen/bilder
      (3) [per-dir d:/files/htdocs/ordner1/] add path-info postfix: d:/files/htdocs/ordner1/de/verbindungen/bilder -> d:/files/htdocs/ordner1/de/verbindungen/bilder/system/lu_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/bilder/system/lu_big.gif -> de/verbindungen/bilder/system/lu_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/bilder/system/lu_big.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/de/verbindungen/bilder
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/bilder/system/logo_small_new.gif -> bilder/system/logo_small_new.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'bilder/system/logo_small_new.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/bilder/system/logo_small_new.gif
      (3) [per-dir d:/files/htdocs/ordner1/] add path-info postfix: d:/files/htdocs/ordner1/de/verbindungen/bilder -> d:/files/htdocs/ordner1/de/verbindungen/bilder/system/pixel.gif
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/bilder/system/pixel.gif -> de/verbindungen/bilder/system/pixel.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/bilder/system/pixel.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/de/verbindungen/bilder
      (3) [per-dir d:/files/htdocs/ordner1/] add path-info postfix: d:/files/htdocs/ordner1/de/verbindungen/bilder -> d:/files/htdocs/ordner1/de/verbindungen/bilder/system/ru_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/bilder/system/ru_big.gif -> de/verbindungen/bilder/system/ru_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/bilder/system/ru_big.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/de/verbindungen/bilder
      (3) [per-dir d:/files/htdocs/ordner1/] add path-info postfix: d:/files/htdocs/ordner1/de/verbindungen/bilder -> d:/files/htdocs/ordner1/de/verbindungen/bilder/system/ro_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] strip per-dir prefix: d:/files/htdocs/ordner1/de/verbindungen/bilder/system/ro_big.gif -> de/verbindungen/bilder/system/ro_big.gif
      (3) [per-dir d:/files/htdocs/ordner1/] applying pattern '^(.*)/(.*)/(.*).php$' to uri 'de/verbindungen/bilder/system/ro_big.gif'
      (1) [per-dir d:/files/htdocs/ordner1/] pass through d:/files/htdocs/ordner1/de/verbindungen/bilder
      --

      In der .htaccess steht folgendes:

      --
      RewriteEngine on
      RewriteBase /igor/
      RewriteRule ^(.*)/(.*)/(.*).php$ /igor/index.php?lang=$1&folder=$2&file=$3 [QSA]
      --

      Was mache ich also, damit der Server im richtigen Verzeichnis nach den Bildern sucht? Es muss doch eine Möglichkeit geben.

      Und kannst du mir auch noch sagen, ob es irgendwo eine Auflistung der Attribute wie [QSA] gibt?

      Vielen Dank
      gast

      1. Hallo,

        Und kannst du mir auch noch sagen, ob es irgendwo eine Auflistung der Attribute wie [QSA] gibt?

        http://httpd.apache.org/docs/mod/mod_rewrite.html und dort nach
        dem Begriff [flags] suchen.

        Viele Grüße,
        Stefan

        1. Danke für den Link! Mit ein bisschen überlegen hätte ich eigentlich selbst drauf kommen müssen ;-)

          gast

  2. Hallo,

    kann mir jemand helfen: Meine Absicht ist es, dass wenn jemand z.B. www.domain.net/de/foo/bar.php eingibt, dass die Anfrage dann auf index.php?lang=de&folder=foo&file=bar "umgeleitet" wird.

    würde ich ganz ähnlich wie Christian schreiben:

    RewriteEngine on
    RewriteRule ^/([^/]*)/([^/]*)/([^.]*).php$ http://www.example.net/index.php?lang=$1&folder=$2&file=$3

    Viele Grüße,
    Stefan