Falscher PHP Zugriff nach htaccess Rewrite Rule

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Falscher PHP Zugriff nach htaccess Rewrite Rule

    Hallo, ich hoffe Ihr könnt mir helfen, da mir inzwischen der Kopf raucht ;)

    Ich möchte im Rahmen eine Projektes folgende Umwandlung vornehmen:
    Input 1 = xy_com/blog/ -> Soll aufrufen: xy_com/blog.php
    Input 2 = xy_com/blog/blog-entry-1 -> Soll aufrufen: xy_com/blogdetail.php?id=1
    Folgende Einträge stehen in der htaccess:
    RewriteRule blog/ blog.php
    RewriteRule blog/(.+)-([0-9]+)$ blogdetail.php?$2

    Die Eingabe 1 wird perfekt umgeleitet. Eingabe 2 führt allerdings leider auch auf die blog.php und nicht zur blogdetail.php.
    Die RewriteRule 2 wird somit ignoriert, da sobald das Wort "blog" auftaucht 1 greift. Wie kann man es steuern, dass die 1
    nur greift, wenn halt auch nur www.xy_com/blog/ eigegeben wird und nicht mehr? Für alles weitere unter /blog/... soll
    dann die 2 greifen.

    Lieben Dank fürs Durchlesen und Hinweise!!

    LG und ein schönes Wochenende
    Anja
    P.S. Kann man das Ganze auch nur mit blog machen, also den "/" noch weglassen. Hatte ihn bewusst als Trenner/Markierung
    eingebaut. Käme aber lieber ohne aus, wenns auch dann liefe.
  • Leider bringt das keine Veränderung. Weiterhin wird bei beiden Eingaben immer nur auf die blog.php verwiesen und es kommt bei längeren Eingaben inkl. der ID-Nr. nicht zum Aufruf der blogdetail.php

    Scheint ja ein komplizierter Fall zu sein, wenn bisher noch keiner eine Lösung hatte :-//

    LG Anja
  • anja81 schrieb:

    Wie kann man es steuern, dass die 1 nur greift, wenn halt auch nur www.xy_com/blog/ eigegeben wird und nicht mehr? Für alles weitere unter /blog/... soll
    dann die 2 greifen.


    Es zählt die Reihenfolge in der du die Regeln definierst.
    Im Normalfall will man dass auf die selbe URL nur eine Regel angewendet wird, deswegen solltest du nach den Regeln immer ein [L] für last rule hinzufügen.

    Außerdem solltes du dir das Thema Reguläre Ausdrücke mal anschauen:

    Hier mein Regelvorschlag (ungetestet)

    Quellcode

    1. RewriteRule blog/?$ blog.php [L]
    2. RewriteRule blog/(.+)-([0-9]+)$ blogdetail.php?$2 [L]