You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Saturday, July 9th 2011, 3:00pm

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.

2

Saturday, July 9th 2011, 10:49pm

Hast du mal RewriteRule blog/$ blog.php probiert?

3

Sunday, July 10th 2011, 9:19am

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

4

Sunday, July 10th 2011, 11:16am

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)

Source code

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

5

Sunday, July 10th 2011, 12:51pm

Hi Torben,

es funktioniert, es funktioniert !!! Du bist der Held des Tages :-)

Vielen Dank für den Hinweis mit dem [L] der scheinbar der Schlüssel war.

LG und einen schönen Sonntag

Social bookmarks