Apache Rewrite
Leon Weiergans
- webserver
1 Dennis
Hallo Forum,
ich möchte für eine kleine Seite, die dynamisch per PHP erstellt wird mit Apaches mod_rewrite die URL's verständlicher machen. Eigentlich wird immer die gleiche Datei mit 1-2 Parametern aufgerufen (wie index.php?K=x&V=y)
Ich habe jetzt folgende Conditions & Rules erstellt, funktioniert auch:
RewriteEngine On
RewriteCond %{REQUEST_URI} (^/home/.*$) [OR]
RewriteCond %{REQUEST_URI} (^/home.*$)
RewriteRule ([1].*$) /index.php?K=1 [QSA,L]
RewriteCond %{REQUEST_URI} (^/archiv/.*$) [OR]
RewriteCond %{REQUEST_URI} (^/archiv.*$)
RewriteRule ([2].*$) /index.php?K=2 [QSA,L]
usw...
Eine Sache bekomme ich aber nicht hin, und zwar habe ich auch eine Suche eingebaut, die ich so aufrufen kann: index.php?K=4&V=suchwort
oder auch einfach nur index.php?K=4.
Dies möchte ich auch aufrufen können wie /suche/suchwort oder auch /suche/suchwort/ oder nur /suche/
Ich schaffe aber nicht die richtige Rewrite-Rule:
Ich habe es jetzt in zwei Schritte gemacht:
RewriteCond %{REQUEST_URI} (^/suche/+.*$) [OR]
RewriteRule ([3].*$) /index.php?K=4 [QSA,L]
RewriteCond %{REQUEST_URI} (^/suche.*$) [OR]
RewriteRule ([4].*$) /index.php?K=4 [QSA,L]
Im ersten Teil sollen die ANfragen mit Suchwort treffen
und im zweiten die ohne Suchworte. Aber wie bekomme ich das Suchwort
nach V=suchwort?
Danke für Hilfe,
Leon
Hi Leon,
RewriteCond %{REQUEST_URI} (^/home/.*$) [OR]
RewriteCond %{REQUEST_URI} (^/home.*$)
RewriteRule ([1].*$) /index.php?K=1 [QSA,L]
Warum so kompliziert? Warum nicht einfach so:
RewriteRule ^/home.* /index.php?K=1 [QSA,L]
Je nachdem wo du die RewriteRule notierst müssen soweit ich weiß eventuell noch die führenden Slashs weg...
RewriteCond %{REQUEST_URI} (^/archiv/.*$) [OR]
RewriteCond %{REQUEST_URI} (^/archiv.*$)
RewriteRule ([2].*$) /index.php?K=2 [QSA,L]
Auch hier - wozu die RewriteCond? Da reicht die RewriteRule:
RewriteRule ^/archiv.* /index.php?K=2
Eine Sache bekomme ich aber nicht hin, und zwar habe ich auch eine Suche eingebaut, die ich so aufrufen kann: index.php?K=4&V=suchwort
oder auch einfach nur index.php?K=4.
Dies möchte ich auch aufrufen können wie /suche/suchwort oder auch /suche/suchwort/ oder nur /suche/
Probiers mal mit
RewriteRule ^/suche/([^/]*)/? /index.php?K=4&V=$1
Allerdings beinhaltet das noch nicht /suche/... aber das sollte auch noch zu schaffen sein.
MfG, Dennis.
Hallo,
Eine Sache bekomme ich aber nicht hin, und zwar habe ich auch eine Suche eingebaut, die ich so aufrufen kann: index.php?K=4&V=suchwort
oder auch einfach nur index.php?K=4.
Dies möchte ich auch aufrufen können wie /suche/suchwort oder auch /suche/suchwort/ oder nur /suche/Probiers mal mit
RewriteRule ^/suche/([^/]*)/? /index.php?K=4&V=$1
Er kann hier versuchen auch mit "RewriteCond %{QUERY_STRING}" und RegExp zu arbeiten.
Grüße
Thomas