Kalle2012: Redirect Pregmatch-Frage: Wie String in neue URL Übernehmen?

Hallo,
ich habe viele URLs nach dem Muster example.org/test_123456

Nun möchte ich die obige Adresse weiterleiten auf
example.org/index.php?search=123456

ich habe bisher leider kein Tutorial gefunden, in dem ich geschnallt habe, wie ich abfrage ob die letzten 6 Zeichen Zahlen sind und dann die Rule danach ausrichte.
Kann mir da einer bitte helfen?

Danke, Kalle

  1. Hi,

    ich habe bisher leider kein Tutorial gefunden, in dem ich geschnallt habe, wie ich abfrage ob die letzten 6 Zeichen Zahlen sind und dann die Rule danach ausrichte.

    du meinst Ziffern, nicht Zahlen.

    Kann mir da einer bitte helfen?

    Formuliere es anders: Du suchst ein Regex, der auf ein Muster aus mindestens(?) sechs Ziffern, unmittelbar gefolgt vom Stringende passt: \d{6,}$
    Da du den gefundenen Ausdruck auch noch weiterverwenden musst, solltest du ihn "aufsammeln", indem du das Muster \d{6,} einklammerst.

    So long,
     Martin

    --
    Ein Ehepaar beim Sex. Sie fragt ihn: "Woran denkst du gerade?" - Er antwortet: "Kennste sowieso nicht."
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Danke schon mal.
      So lüppt es nicht:
      Denke mal, dass da aber noch ein Fehler drin ist...
      Noch nen effektiven Tipp?
      RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]
      gruß Kalle

      Hi,

      ich habe bisher leider kein Tutorial gefunden, in dem ich geschnallt habe, wie ich abfrage ob die letzten 6 Zeichen Zahlen sind und dann die Rule danach ausrichte.

      du meinst Ziffern, nicht Zahlen.

      Kann mir da einer bitte helfen?

      Formuliere es anders: Du suchst ein Regex, der auf ein Muster aus mindestens(?) sechs Ziffern, unmittelbar gefolgt vom Stringende passt: \d{6,}$
      Da du den gefundenen Ausdruck auch noch weiterverwenden musst, solltest du ihn "aufsammeln", indem du das Muster \d{6,} einklammerst.

      So long,
      Martin

      1. Denke mal, dass da aber noch ein Fehler drin ist...
        RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]

        Das passt aber auch nicht zu Deiner Frage

        Du willst zu: von:
        test_123456 also test_[6 Ziffern]
        zu:
        example.org/index.php?search=123456

        RewriteRule ^test_(\d{6})$ index.php?search=$1 [L]

        wäre besser  wobei ich aber glaube, Du willst eher:

        RewriteRule ^test_(\d+)$ index.php?search=$1 [L]

        (für alle Aufrufe einer Ressource einer Ressource test_(mindestens 1 Ziffer) tu mal so, als wäre index.php?search=(mindestens 1 Ziffer) aufgerufen worden.)

        Was Du gemacht hast:

        ^ :: Beginnt die von Server angeforderte Resource mit
        (\d{6}) ::  genau 6 Ziffern, die zu merken sind

        dann schicke dem Browser die Mitteilung, dass die Ressource dauerhaft verzogen ist [R=301], dass keine weitere Regel beachtet werden soll [L] und schicke ihn zu http://www.example.org/index.php? gefolgt von den gemerkten 6 Ziffern.

        fred

        1. Ah ok... Danke!
          Die Erklärung hilft wirklich denke ich.
          Vg kalle

          Denke mal, dass da aber noch ein Fehler drin ist...
          RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]

          Das passt aber auch nicht zu Deiner Frage

          Du willst zu: von:
          test_123456 also test_[6 Ziffern]
          zu:
          example.org/index.php?search=123456

          RewriteRule ^test_(\d{6})$ index.php?search=$1 [L]

          wäre besser  wobei ich aber glaube, Du willst eher:

          RewriteRule ^test_(\d+)$ index.php?search=$1 [L]

          (für alle Aufrufe einer Ressource einer Ressource test_(mindestens 1 Ziffer) tu mal so, als wäre index.php?search=(mindestens 1 Ziffer) aufgerufen worden.)

          Was Du gemacht hast:

          ^ :: Beginnt die von Server angeforderte Resource mit
          (\d{6}) ::  genau 6 Ziffern, die zu merken sind

          dann schicke dem Browser die Mitteilung, dass die Ressource dauerhaft verzogen ist [R=301], dass keine weitere Regel beachtet werden soll [L] und schicke ihn zu http://www.example.org/index.php? gefolgt von den gemerkten 6 Ziffern.

          fred

      2. RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]

        Das hier gegebene Muster entspricht Stringanfang gefolgt von exakt 6 Dezimalziffern gefolgt von einem Slash gefolgt vom Stringende

        Passt also auf "123456/" oder "555555/" nicht aber auf "foo/bar/123456" oder "foo/bar/123456/"