Berki: mod_rewrite Rules und Zusammenfassen.

Abend Alle zusammen.

Also ich hoffe mal es kann mir wer helfen denn ich such jetzt schon geraume Zeit nach einer Lösung finde sie allerdings leider nicht.

Hab derzeit mod_rewrite bei mir in Verwendung und versuche das halbwegs gscheit hin zu bekommen. Es funktioniert auch eigentlich sehr gut. Mein Problem ist das ich in meinen Url keinen . (Punkt) nutzen kann.

d.h. eine url die z.b.
http://meinedomain.de/hallo-welt/einszwei/blablab/1.2/
heißt geht net weil er mit dem . problem hat.
http://meinedomain.de/hallo-welt/einszwei/blablab/1:2/ geht allerdings.

Nun ist es so das eine meiner vielen Rules soe geht
Rewriterule ^-/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3

Nun ich ahb jetzt versucht in [-:a-z0-9] auch schon ., ., /. usw einzufügen allerdings den Punkt kann er dennoch net.
Hat wer dazu vielleicht eine lösung?

So nun zu meinem Zweiten Problem.

Ich arbeite wie man oben sieht mit Gruppen und deren Untergruppen und möchte nun im link z.b.
http://meinedomain.de/gruppe1/gruppe2/gruppe3/gruppe4/gruppe5/
haben.

Geht auch soweit so gut allerdings mit dann noch $page und co dazu sinds halt derzeit über 300Regeln. Ladenzeiten mässig wärs jetzt net so schlimm aber wollte trotzdem fragen ob man solche Regeln

//Gruppe
Rewriterule ^([-:a-z0-9]+)/$ index.php?gr1=$1 [L]
Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2 [L]
Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3 [L]
Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4 [L]
Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4&gr5=$5 [L]

Net einfach zu einer Regel zusammen fassen könnte. Oder ob veilleicht einer einen Tip dazu hätte.

Denn ich kann meine Pages wie z.B. News, Contact usw in Home (also ohne Gruppe) sowie auch in den Gruppen anschauen.
D.h. ich benötige da schon einige Regeln mit allem drum herrum obwohl ich natrülich die page auch mit [-:a-z0-0] mache.

Vielleicht kann mir da auch jemand helfen :)

So nun zu meiner letzten Frage wo ich leider auch keine Antwort gefunden habe.

So ich habe jetzt Regeln für die jeweiligen Gruppen und für die Seiten ohne Gruppe.

Wenn ich z.b. in Gruppe 5 bin und dort eine bestimmte news anschauen will schaut die Regel so aus
Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/PAGE/([-:a-z0-9]+)/([0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4&gr5=$5&page=$6&action=show&id=$7 [L]

und wenn ich sie ohne gruppe anschaue halt so
Rewriterule ^PAGE/([a-z]+)/([0-9]+)/$ index.php?page=$1&action=show&id=$2 [L]

Jetzt ist meine Frage kann .htaccess auch Solche dinge net selbstständig zusammenfügen.

Also das ich sage Der Teil 1 Gruppen defeniere ich einfmal. Und die Gruppen Page einmal und er baut sie selbständig zusammen.

Oder auch einfach ne möglichkeit wo ich z.b. sage
http://meinedomain.de/gruppe1/""gruppe2/""gruppe3/

Ist in meiner Rewrite rule so das dort nix oder mehr zeichen stehen könnten und am ende /.

D.h. wie ganz oben die Vereinfachung von 5 Regeln für 5 Untergruppen auf eine.

Hoffe mal es war halbwegs verständlich und mir kann einer weiterhelfen.

gleichmal vielen dank

mfg Berki

  1. //Gruppe
    Rewriterule ^([-:a-z0-9]+)/$ index.php?gr1=$1 [L]
    Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2 [L]
    Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3 [L]
    Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4 [L]
    Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4&gr5=$5 [L]

    Net einfach zu einer Regel zusammen fassen könnte. Oder ob veilleicht einer einen Tip dazu hätte.

    Rewriterule ^(.*) index.php?path=$1 [L,QSA]

    PHP muss für etwas gut sein!
    Und nein: mod_rewrite ist keine Programmiersprache.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. //Gruppe
      Rewriterule ^([-:a-z0-9]+)/$ index.php?gr1=$1 [L]
      Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2 [L]
      Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3 [L]
      Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4 [L]
      Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4&gr5=$5 [L]

      Net einfach zu einer Regel zusammen fassen könnte. Oder ob veilleicht einer einen Tip dazu hätte.

      Rewriterule ^(.*) index.php?path=$1 [L,QSA]

      PHP muss für etwas gut sein!
      Und nein: mod_rewrite ist keine Programmiersprache.

      mfg Beat

      Abend.

      Danke für deine schnell Antwort auch wenn ich als Anfänger darauß net ganz schlau werde.

      Aber nachdem ich es gepostet habe ich es noch einmal mit . versucht und jetzt gehts. Warum auch immer.

      Also das Problem mit dem Punkt wäre gelöst.

      Zu deiner Regel bin ich mir jetzt net sicher ob das net auf den Punkt bezogen war. Denn bei allem anderen hätte ich das so schonmal versucht :(

      Leider hats net geklappt.

      Das mod_rewrite keine Programmiersprache ist, ist mir schon aufgefallen :).

      Aber denke du meinst das zusammenlegen oder direkt danach setzen.

      Sry für das blöde nachfragen.

      mfg Berki

      1. Zu deiner Regel bin ich mir jetzt net sicher ob das net auf den Punkt bezogen war. Denn bei allem anderen hätte ich das so schonmal versucht :(

        ..

        Aber denke du meinst das zusammenlegen oder direkt danach setzen.

        Ich meine das als Ersatz für deine 500 Regeln.

        Ich meine damit: Was deine index.php erledigen kann, das delegiere nicht unnötig an mod_rewrite ab. Und es ist ja offensichtlich, dass du alle Anfragen an die gleiche Ressource leitest

        Im übrigen solltest du dich mit Zeichenklassen beschäftigen.
        [.] heisst genau ein Punkt.
        . heisst ANY_CHAR
        . heisst ein Punkt

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Zu deiner Regel bin ich mir jetzt net sicher ob das net auf den Punkt bezogen war. Denn bei allem anderen hätte ich das so schonmal versucht :(
          ..
          Aber denke du meinst das zusammenlegen oder direkt danach setzen.

          Ich meine das als Ersatz für deine 500 Regeln.

          Ich meine damit: Was deine index.php erledigen kann, das delegiere nicht unnötig an mod_rewrite ab. Und es ist ja offensichtlich, dass du alle Anfragen an die gleiche Ressource leitest

          Im übrigen solltest du dich mit Zeichenklassen beschäftigen.
          [.] heisst genau ein Punkt.
          . heisst ANY_CHAR
          . heisst ein Punkt

          mfg Beat

          Nochmal hi

          Also zur Zeichenklassen.
          Ich hab da einiges durchgelesen aber irgendwie hat nix geklappt bis jetzt. Warum es auf einmal klappt ka. Vielleicht hab ich was gelöscht oder uach net.

          Zu meinen 500Regeln.
          Das was du gesendet hast, habe ich schon versucht auch in allen varianten und usw.

          Die 5 Zeilen sind nur weniger der vielen zeilen. Hin und wieder gehts auch auf andere datein und net unbedingt auf die index.php.

          Aber trotzdem danke auch wenn ich net ganz schlau darauß werde aber zumindest weiß ich jetzt das es klappen müsste.

          mfg Berki

          1. Hi.

            Da sich das Thema erledigt hat beantworte ich die Fragen mal sollten irgendwer die selben Probleme haben.

            Problem 1 Punkt geht net)

            Hier zu hatte ich ja ^([-:-9a-z]+)/ verwendet.
            bei mir sind diese varianten net gegangen
            ^([-:.-9a-z]+)/
            ^([-:/.-9a-z]+)/
            ^([-:.-9a-z]+)/
            ^([-:[.]-9a-z]+)/
            allerdings so gehts warum auch immer.
            ^([-:a-z0-9.]+)/

            Problem 2 Punkt Zusammenfassen von

            //Gruppe
            Rewriterule ^([-:a-z0-9]+)/$ index.php?gr1=$1 [L]
            Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2 [L]
            Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3 [L]
            Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4 [L]
            Rewriterule ^([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/([-:a-z0-9]+)/$ index.php?gr1=$1&gr2=$2&gr3=$3&gr4=$4&gr5=$5 [L]

            Hab ich nun das von Beat genutzt

            einfach
            ^(.*) index.php?gruppen=$1 [L,QSA]
            Für sprache usw. natürlich hab ich dann halt z.b.
            ^/lang/(.*) lang.php?...

            In Php muss man halt die $_GET['gruppen'] dann halt weiterverarbeiten und teilen.

            Da ich auch noch eine eigen Page und Gruppen+Page haben schaut das dann ungefair so aus

            ^/PAGE/(.*) index.php?page=$1 [L,QSA]
            ^(.*)/PAGE/(.*) index.php?gruppen=$1&page=$2 [L,QSA]
            ^(.*) index.php?gruppen=$1 [L,QSA]

            Und daher ist das auch die Lösung für 3 ob man net zusammenfügen kann obwohl ich dazu auch was gefunden habe das man das getrennt weiterleitet bzw. er die Links selbständig zusammenfügt aber darauß bin ich net schlau geworden.

            Hoffe es Hilft wenn.

            mfg Berki