Seite 1 von 1
					
				mod rewrite für 2. Parameter
				Verfasst: 16.08.2004, 17:44
				von pfuchs
				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
 
			
					
				
				Verfasst: 
				von 
				
SEO Consulting bei 
ABAKUS Internet Marketing  Erfahrung seit 2002 
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen: 
0511 / 300325-0.
 
 
  
			
					
				
				Verfasst: 16.08.2004, 18:39
				von warry
				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
			 
			
					
				
				Verfasst: 17.08.2004, 20:26
				von MikeD
				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
 
			
					
				
				Verfasst: 17.08.2004, 21:05
				von warry
				
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
 
			
					
				
				Verfasst: 17.08.2004, 21:33
				von MikeD
				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 
 
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  
 
 
Gruß
Mike
und danke nochmal
 
			
					
				
				Verfasst: 17.08.2004, 21:47
				von warry
				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
 
			
					
				
				Verfasst: 19.08.2004, 22:45
				von Halli
				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
 
			
					
				
				Verfasst: 19.08.2004, 22:55
				von MikeD
				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 
 
Gruß
Mike
 
			
					
				
				Verfasst: 24.08.2004, 21:54
				von pfuchs
				@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
 
			
					
				
				Verfasst: 24.08.2004, 22:19
				von Halli
				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 
 
			
					
				
				Verfasst: 25.08.2004, 07:53
				von pfuchs
				@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
 
			
					
				
				Verfasst: 25.08.2004, 08:30
				von warry
				Was in der ersten Klammer steht findet sich in $1 (usw. 2. Klammer = $2...)wieder, also in deinem Beispiel "dideldadel".
Greets
warry
			 
			
					
				
				Verfasst: 25.08.2004, 08:41
				von pfuchs
				@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
 
			
					
				
				Verfasst: 25.08.2004, 09:45
				von warry
				
$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