Seite 1 von 1

Brauche Hilfe bei Mod-Rewrite

Verfasst: 28.07.2011, 16:25
von osgee
Liebes Abakus Forum!

Bin leider kein Profi bei Mod Rewrite, weshalb ich eure Hilfe benötige ...

Und zwar hab ich momentan dynamische URLs in folgendem Format:

beispieldomain.com/artikel.php?action=read&id=123

Ich würde diese URLs gerne wie folgt aufrufen: beispieldomain.com/artikel/123/titel

Der "titel" ist in diesem Bsp zwar nicht vorher in der URL, kann ich aber via PHP auslesen, also kein Problem. Es soll so sein, dass dort im Grunde der "titel" irrelevant ist, sondern nur die id eindeutig ist.

Kann mir jemand helfen? Wäre super!

Danke schonmal!

Verfasst:
von

Verfasst: 28.07.2011, 16:34
von Synonym
RewriteRule ^artikel/([0-9]+)/ /artikel.php?action=read&id=$1 [L]

So was??

Verfasst: 28.07.2011, 18:21
von osgee
Funktioniert leider nicht .. hat keine auswirkung :(

Verfasst:
von

Verfasst: 28.07.2011, 18:34
von Synonym
Wie, hat keine Auswirkung?

Welche URL hast Du denn aufgerufen / eingetippt?

Verfasst: 28.07.2011, 18:34
von net(t)worker
die Links auf der Webseite etc musste da natürlich selber noch umändern... mod_rewrite wirkt nur beim Seitenaufruf um die schöne Url wieder fürs script in einen querystring umzuwandeln...

Verfasst: 28.07.2011, 19:20
von osgee
net(t)worker hat geschrieben:die Links auf der Webseite etc musste da natürlich selber noch umändern... mod_rewrite wirkt nur beim Seitenaufruf um die schöne Url wieder fürs script in einen querystring umzuwandeln...
das is mir klar, ich habe beispieldomain.com/artikel/123/asd aufgerufen und ich komme da nur auf die artikelübersichtsseite (artikel.php), der scheint da das action=read und die id nicht abzufragen wenn ich den link so eingebe .. also ich komme gar nicht in den if-teil in meinem php skript wo folgendes steht:

if($_GET['action'] == "read")

Verfasst: 29.07.2011, 08:27
von Synonym
ist die URL wirklich so:
beispieldomain.com/artikel/123/asd

Also /ZIFFERN/irgendein-titel ??
ich komme da nur auf die artikelübersichtsseite (artikel.php
Also scheint die Rule ja zumindest schon mal so weit zu funktionieren, denn sonst dürfte Dein System mit der URL ja nichts anfangen können.

RewriteEngine on
RewriteRule ^artikel/([0-9]+)/ /artikel.php?action=read&id=$1 [L]

Also scheint das /artikel/ -> artikel.php aus der Rule ja zu gehen. Fraglich jetzt nur, warum das ([0-9]+) -> &id=$1 nicht geht, und wo das action=read hin ist. Oder der Aufruf der artikel.php kommt von wo ganz anders.

Sag doch mal die genauen URLs, also so, wie sie wirklich sind und wie sie sein sollen. Und wenn nötig, dann zeig auch mal das Script dahinter.

if($_GET['action'] == "read")
sollte nämlich problemlos funktionieren.

Ich habe da nun nämlich wirklich viel mehr den Verdacht, dass Dein Script an einigen Stellen das nicht so macht, wie es es machen sollte.

Verfasst: 30.07.2011, 00:34
von osgee
Also an dem Skript denke ich liegt es nicht. Habe nun nämlich testweise bei deiner Rewrite-Rule einfach nur die Slashes durch Beistriche ersetzt, sodass die Domain so aussieht: beispieldomain.com/artikel,123,asd

Und das funktioniert problemlos! Also da erkennt er auch die PHP-Parameter. Aber sobald in der RewriteRule die Slashes vorkommen bzw. der Ordner simuliert werden soll, erkennt er die Parameter nicht mehr .. :-S

Verfasst: 08.08.2011, 10:56
von osgee
Niemand ne Idee? :(

Verfasst: 08.08.2011, 13:10
von marle
beispieldomain.com/artikel/123/titel
beispieldomain.com/artikel.php?action=read&id=123


RewriteRule ^artikel/([0-9]+)/(.+) /artikel.php?action=read&id=$1&titel=$2 [L]


Erklärung

Die URL muss aus
"artikel" slash Zahlen (mindestens 1 Stelle maximal x Stellen) slash beliebige Zeichen (mindestens 1 Stelle maximal x Stellen)
bestehen

Bitte :-)

Verfasst: 09.08.2011, 07:30
von Synonym
Das hatte ich oben doch schon geschrieben, nur eben ohne dem (.+), da er den Titel in den Parametern nicht braucht.

Er sagte aber, dass genau das nicht geht.

Kann ich zwar nicht glauben, das das bei mir seit Jahren so geht, aber da fehlen nun halt weitere Informationen. Etwa die ganze htaccess und das Script, das dann die Parameter ausließt.