Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod rewrite für 2. Parameter

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 16.08.2004, 17:44

Hallo Forumer,

bisher habe ich URL´s mit einem Parameter,
also zB. show_cat.php?cat_id=12 wie folgt umgeschrieben:
RewriteEngine on
RewriteCond %{REQUEST_URI} blabla-(.*)\.html$
RewriteRule blabla-(.*)\.html$ /show_cat.php?cat_id=$1
Raus kam dabei: blabla-12.html

Wie schreibe ich, nun URL´s mit zwei Parametern,
also z.B. show_cat.php?cat_id=12&page=3 um?

Rauskommen, soll sowas wie: blabla-12-3.html

Besten Dank für jeden Tipp.

Peter

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


warry
PostRank 5
PostRank 5
Beiträge: 304
Registriert: 24.06.2003, 16:36
Wohnort: Walbeck, Niederrhein, NRW

Beitrag von warry » 16.08.2004, 18:39

RewriteRule blabla-(.*)-(.*)\.html$ /show_cat.php?cat_id=$1&page=$2

Diese dann als erste rule, sonst wird die andere rule zuerst greifen.

Greets
warry

MikeD
PostRank 4
PostRank 4
Beiträge: 108
Registriert: 12.08.2004, 22:32
Wohnort: Idar-Oberstein

Beitrag von MikeD » 17.08.2004, 20:26

Sorry aber ich häng mich mal an die Frage ran:

ich hab - um obiges Beispiel mal so zu übernehmen folgendes drin:

RewriteRule (.[0-9])/(.*)\.html$ /show_cat.php?cat_id=$1

mußte ich leider, weil mir sonst meine sonstigen Strukturen /text/usw. ggf. in Mitleidenschaft gezogen werden.

Funktioniert soweit sogut - mit dem klitzekleinen aber sehr nervigen problemchen:
/10/xxx bis /99/xxx werden korrekt weitergeleitet.
/1/xxx bis /9/xxx nicht
und /100/xxx aufwärts ebenfalls nicht.

Irgendwie sind die regulären Ausdrücke nix für meinen Zwischen-Ohr-Algo :(

habs schon mit \d probiert - auch kein Erfolg - bekommst nur mit (.*) zum laufen.

Hat jemand nen Tipp - wäre toll.

Gruß
Mike

warry
PostRank 5
PostRank 5
Beiträge: 304
Registriert: 24.06.2003, 16:36
Wohnort: Walbeck, Niederrhein, NRW

Beitrag von warry » 17.08.2004, 21:05

RewriteRule (.[0-9])/(.*)\.html$ /show_cat.php?cat_id=$1
Wie sieht's denn mit \d+ aus, also
RewriteRule ^(\d+)/(.*)\.html$ /show_cat.php?cat_id=$1

Das sollte eine Ziffernfolge vor dem ersten Slash finden.
In deiner Rule kann das Zeichen vor der Ziffer ein beliebiges Zeichen sein, dafür steht der Punkt. Deine Rule würde also auch c9 oder sowas matchen.

Ich empfehle das Camel-Buch, daraus hab ich es auch so halbwegs gelernt ;-)

Greets
warry

MikeD
PostRank 4
PostRank 4
Beiträge: 108
Registriert: 12.08.2004, 22:32
Wohnort: Idar-Oberstein

Beitrag von MikeD » 17.08.2004, 21:33

danke warry,

camel-buch .... überfordere doch nen armen Mann mit wilkinson-allergie aufm kopf nicht :-(

die Regel scheint logisch - der punkt hat mir das mit dem \d vermasselt :D

nur dass ich auf (\d+)/(\d+)/(\d+)/(.*)\.html$ /show_cat.php?cat_id=$1&etc.
erweitern muß mit einer Regel - denke dann ohne ^ sollte es funzen - muß ich mal testen.

hab die regulären ausdrücke schon bei golive vermalledeit 8)

Gruß
Mike
und danke nochmal

warry
PostRank 5
PostRank 5
Beiträge: 304
Registriert: 24.06.2003, 16:36
Wohnort: Walbeck, Niederrhein, NRW

Beitrag von warry » 17.08.2004, 21:47

Man verzeihe mir den Ref-Link:
https://www.amazon.de/exec/obidos/ASIN/ ... chno03-21/

Weiß ja nicht, wie deine URLs aussehen, aber (\d+)/ findet "1" oder "12" oder "123" oder "123456789" usw.

^ bedeutet im diesem Fall, daß die Ziffernfolge am Anfang stehen muß.

Und so schwer ist das auch nicht ;-)

Greets
warry

Halli
PostRank 7
PostRank 7
Beiträge: 584
Registriert: 21.08.2003, 00:40
Wohnort: Hannover

Beitrag von Halli » 19.08.2004, 22:45

MikeD hat geschrieben:RewriteRule (.[0-9])/(.*)\.html$ /show_cat.php?cat_id=$1
Funktioniert soweit sogut - mit dem klitzekleinen aber sehr nervigen problemchen:
/10/xxx bis /99/xxx werden korrekt weitergeleitet.
/1/xxx bis /9/xxx nicht
und /100/xxx aufwärts ebenfalls nicht.
Das (.[0-9]) findet eine Folge aus IRGENDEINEM Zeichen und EINER Ziffer, also 10-99, wie Du ja richtig postest. Aber auch a1 würde gefunden.

Beliebig viele Zahlen findest Du mit ([0-9]*), insgesamt also:
RewriteRule ([0-9]*)/(.*)\.html$ /show_cat.php?cat_id=$1
wer besoffen noch geradeaus fahren kann ist bald reif fürs www.mpu-forum.de

MikeD
PostRank 4
PostRank 4
Beiträge: 108
Registriert: 12.08.2004, 22:32
Wohnort: Idar-Oberstein

Beitrag von MikeD » 19.08.2004, 22:55

Hoi Halli,

kam noch nicht dazu das \d als 'nicht geklappt' anzumerken.

Danke für deinen tip - demzufolge würde [0-9] ja den '.' ersetzen - jetzt hört sich das für mich logisch an :)

muß ich nachher mal testen. Danke :D

Gruß
Mike

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 24.08.2004, 21:54

@warry,
RewriteRule blabla-(.*)-(.*)\.html$ /show_cat.php?cat_id=$1&page=$2

Danke hat geklappt.

Jetzt würde ich noch gerne, die Dateinamen sinnvoll vergeben. Z.B. analog zum Seitentitel (=Variable aus Datenbank).

Würde also gerne, statt "blabla-" eine Variable (aus Datenbank) einbinden.

Geht das überhaupt?

Beste Grüsse, Peter

Halli
PostRank 7
PostRank 7
Beiträge: 584
Registriert: 21.08.2003, 00:40
Wohnort: Hannover

Beitrag von Halli » 24.08.2004, 22:19

pfuchs hat geschrieben:Jetzt würde ich noch gerne, die Dateinamen sinnvoll vergeben. Z.B. analog zum Seitentitel (=Variable aus Datenbank).

Würde also gerne, statt "blabla-" eine Variable (aus Datenbank) einbinden.

Geht das überhaupt?
Ja, Du kannst den eigentlich relevanten Ziffern natürlich beliebigen Text voranstellen. Allerdings würde ich die Ziffern nicht mit (.*), sondern mit ([0-9]*) maskieren, also:

Code: Alles auswählen

RewriteRule (.*)-([0-9]*)-([0-9]*)\.html$ /show_cat.php?cat_id=$2&page=$3 
wer besoffen noch geradeaus fahren kann ist bald reif fürs www.mpu-forum.de

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 25.08.2004, 07:53

@Halli,
RewriteRule (.*)-([0-9]*)-([0-9]*)\.html$ /show_cat.php?cat_id=$2&page=$3
Aber ich muss doch irgendwo angeben, welche Variable ich übergebe!? Oder passiert das mit den Linktext (Beispiel: a href="dideldadel-1-3.html") Und dann wird "dideldadel" automatisch als erste Variable erkannt??

Und danke für den Tipp mit [0-9] - welche Vorteile hat das denn?

Beste Grüsse, Peter

warry
PostRank 5
PostRank 5
Beiträge: 304
Registriert: 24.06.2003, 16:36
Wohnort: Walbeck, Niederrhein, NRW

Beitrag von warry » 25.08.2004, 08:30

Was in der ersten Klammer steht findet sich in $1 (usw. 2. Klammer = $2...)wieder, also in deinem Beispiel "dideldadel".

Greets
warry

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 25.08.2004, 08:41

@warry,

nochmal für einen Nix-Checker wie mich.

Angenommen "dideldadel" ist der Seitentitel bei mir.
Dieser wird für die html-ausgabe aus einer datenbank geholt, also z.b.
<?php
$titel = .....
echo "<title>$title</title>
?>
Muss ich nun noch angeben (damit htaccess weiss, was $1 sein soll)
$1 = $title;
Oder zieht er sich den Wert für $1 automatisch aus der HREF-Angabe (siehe vorheriges Beispiel?

Besten Dank, Peter

warry
PostRank 5
PostRank 5
Beiträge: 304
Registriert: 24.06.2003, 16:36
Wohnort: Walbeck, Niederrhein, NRW

Beitrag von warry » 25.08.2004, 09:45

$1 = $title;
Nein
Oder zieht er sich den Wert für $1 automatisch aus der HREF-Angabe (siehe vorheriges Beispiel?
Ja, wenn du es so ausdrücken willst. $1 steht für das, was mit der ersten Klammer "matched".

Probier es doch einfach mal aus ;-)

Greets
warry

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag