mod_rewrite Rules und Zusammenfassen.
Berki
- webserver
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
//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
//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
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
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 Punktmfg 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
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