Forenindex » Programmierung/Entwicklung » PHP und MySQL » mod_rewrite

mod_rewrite

[23]^5^
Beiträge gesamt: 14

1. Mär 2004, 13:59
Bewertung:

gelesen: 1083

Beitrag als Lesezeichen
Ich hab hier folgende mod_rewrite-Rules

Code
RewriteEngine On 
RewriteCond %{REQUEST_URI} /(.*)\.html$

RewriteRule ^([^\/]+).html$ index.php?var1=$1 [L]
RewriteRule ^([^\/]+)/([^\/]+).html$ index.php?var1=$1&var2=$2 [L]
RewriteRule ^([^\/]+)/([^\/]+)/([^\/]+).html$ index.php?var1=$1&var2=$2&var3=$3 [L]


Wenn ich jetzt aber eine RewriteRule haben will die mir falls 4 Parameter in der URL sind, 4 Variablen macht, und bei 5 eben 5, weiss ich nicht mehr weiter. (also so ne Art Schleife)

Hab mir gedacht es gib vielleicht einen RegEx der mir das richtig ausliesst.


Vielleicht haben wir hier einen richtigen RegEx-Guru hier...

vielen dank im Voraus

[23]^5^

--
das Genie beherrscht das Chaos

mod_rewrite

oesi50
  
Beiträge gesamt: 2315

1. Mär 2004, 14:20
Bewertung:

gelesen: 1083

Beitrag als Lesezeichen
Hi 23 xor 5

kommst Du nicht besser, wenn Du den Gesamten String (.*) als $1 übergibst?
In Deinem Script zerlegst Du es dann mit $array = explode ('/', $string).
Das ergibt ein schönes Array zum auswerten.

Damit ergeben sich 2 Vorteile:
1. die Regex-Rewrite Engine wird nicht so belastet
2. es sind mehr als 9 Parameter möglich

Nachtrag:

Ich halte es auch nicht für gut, alle Aufrufe durch die RewriteEngine parsen zu lassen.
Besser ist es, eine Kennung einzusetzen, und nur diese zu bearbeiten zb.: .htm
Dadurch werden andere statische Seiten nicht durch dein Script genudelt.



Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

(Dieser Beitrag wurde von oesi50 am 1. Mär 2004, 14:51 geändert)

mod_rewrite

[23]^5^
Beiträge gesamt: 14

1. Mär 2004, 14:24
Bewertung:

gelesen: 1083

Beitrag als Lesezeichen
ok die idee ist garnicht so schlecht... werd das auch so machen.
Jetzt möchte man aber auch noch was dazulernen und deshalb frag ich gleich mal: wie kann ich den einen RegEx machen der wie eine Schleife behandelt wird... sprich wie hätte der RegEx aussehen müssen? :p

grüße Samuel
--
nur das Genie beherrscht das Chaos

mod_rewrite

oesi50
  
Beiträge gesamt: 2315

1. Mär 2004, 14:50
Bewertung:

gelesen: 1083

Beitrag als Lesezeichen
eine Schleife kann man mit RewriteRule .... [N] produzieren.
Damit wird die Regel so lange ausgeführt, wie noch Treffer existieren.

=== But be careful not to create an infinite loop! ===

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

(Dieser Beitrag wurde von oesi50 am 1. Mär 2004, 14:53 geändert)