[Apache] mod_rewrite Problem

  • Guten Abend,


    ich versuche unsere Homepage mit Permalinks (für Google) auszustatten.


    PHP
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]*)\.html$ /index.php?page=$1 [L]
    RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?page=$1&sub=$2 [L]
    </IfModule>


    In diesem Beispiel habe ich in der ersten RewriteRule den Parameter page und in der zweiten RewriteRule page + sub angegeben.


    Unsere Seite ist leider verschachtelt und es kommen auch mehr als nur diese beiden Parameter vor.


    PHP
    RewriteRule ^page/([^/]*)\.html$ /index.php?page=$1 [QSA,L]
    RewriteRule ^page/([^/]*)/sub/([^/]*)\.html$ /index.php?page=$1&sub=$2 [QSA,L]


    Mit diesen beiden RewriteRule's kann man nach der URL zusätzlich Parameter angeben.
    Beispiel: /beispiel/unterseite.html?id=5&sort=name& ...


    Für Google würde ich gerne die ganze Seite mit Permalinks ausstatten. Damit es nicht zu einem Konflikt kommt wird die ID der Parameter auch in den Link gepackt.


    PHP
    RewriteRule ^([^/]*)-([^/]*)/([^/]*)-([^/]*)\.html$ /index.php?$1=$2&$3=$4


    Mit dieser RewriteRule kann ich zwar eine Seite mit Unterseite aufrufen... aber mehr auch nicht.
    Beispiel: /page-server/sub-clienthistory.html


    Jetzt zu meinem Problem:
    Wie kann ich die RewriteRule anpassen damit ich keine lange Liste mit wiederholten /([^/]*)-([^/]*) angeben muss?
    Beispiel: /page-beispiel/sub-unterseite/id-5/sort-name/row-100.html


    Ich hoffe jemand versteht mein Problem. :S


    Liebe Grüße,
    Sponge-Manu

    Unser Server auf TS3index.com


    Homepage: www.fun-und-witze.de

    Hinweis: Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


  • Danke für die Antwort.


    Ich hatte schon an Slim gedacht, wollte aber die Seite nicht komplett umbauen.
    Zudem habe ich das selbe Ergebnis wie mit mod_rewrite


    PHP
    $app->get('/:page/:sub', function ($page, $sub) {
        //Code
    });


    Oder liege ich falsch?

    Unser Server auf TS3index.com


    Homepage: www.fun-und-witze.de

    Hinweis: Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


  • Je nach genauem Vorhaben ist Slim nur bedingt eine Hilfe. Viel eher wäre es sinnvoll, dass du dir einen vernünftigen Router zulegst und in deine bestehende Anwendung implentierst, Slim hat einen, aber ein komplettes, wenn auch nur Micro-, Framework zu installieren halte ich für eher sinnlos. Eine Idee wäre eine der HttpKernelInterface Implementation von StackPHP alternativ einfach den plainen Symfony Router Component. Wenn du eher was kleineres willst, kannst du dir mal den Aura Router anschauen.
    Wenn du es vernünftig anstellst und dein bisheriger Code halbwegs ordentlich ist, musst du nur relativ wenig anpassen.


    Wenn du wirklich nur die Rewrite Rules anpassen willst, bleibt dir wohl nichts anderes übrig, als das manuell für jeden Seiten-"Typen" zu machen.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.