Seite 1 von 1

Url Rewrite Frage (tricky)

Verfasst: 22.11.2012, 21:52
von Stelufl
Moin,

ich plage mich gerade schon den ganzen Tag mit mod rewrite herum und bin nun auch fast fertig. Aber den letzten Schritt kriege ich nicht hin.

Ich habe eine Url in der Ursprungsform:

https://www.domain.de/index.php?content ... ic-15-zoll

Nun habe ich es mit folgender mod-rewrite Anweisung:

Code: Alles auswählen

RewriteCond %{QUERY_STRING}     ^(.*)$    [NC]
RewriteRule ^productinfo/$ /index.php?content=productinfo&%1
geschafft, die Url folgendermaßen umzuschreiben:

https://www.domain.de/productinfo/?id=5 ... ic-15-zoll

Was ich letztenendes jedoch möchte, ist, nach dem "productinfo/" den Wert des model und nur des model anzuzeigen und dahinter ein .php zu schreiben, also so:

https://www.domain.de/productinfo/anthr ... 5-zoll.php

Meine Idee, wie man das mit mod rewrite löst wäre gewesen:

Code: Alles auswählen

RewriteCond %{QUERY_STRING}     ^id=(.+)&model=(.+)$    [NC]
RewriteRule ^productinfo/%2\.php$ /index.php?content=productinfo&id=%1&model=%2
Das klappt aber schon allein deshalb nicht, weil es die Url gänzlich auch ohne Parameter gibt (Produktübersicht), also:
https://www.domain.de/productinfo/


Hat jemand einen Rat?

Vielen Dank.

Verfasst:
von

Verfasst: 22.11.2012, 22:11
von Stelufl
Ok ich habe einen Denkfehler da drin, oder? Ich kann nicht nur das Model in den Link schreiben, die ID muss ja auch noch mit rein, und die kann ich anschließend nicht "nicht anzeigen, aber als Parameter übergeben", oder?

Verfasst: 23.11.2012, 10:13
von Melegrian
Stelufl hat geschrieben:Ok ich habe einen Denkfehler da drin, oder?
Zwei denke ich eher.

Von ^ bis $ ist ja das jeweilige Suchmuster und Du versuchst die gefundenen Treffer von einem Suchmuster mit %2 ins nächste Suchmuster zu übernehmen. Irgendwo hatte ich mal in einem Buch gelesen, der Apache findet zuerst die Regeln und überprüft dann erst die Konditionen. Würde bedeuten, %2 ist noch nicht gefüllt, wenn der Apache die Regel findet. Vor dem Auslösen werden nach dem Fund die Konditionen geprüft, ob diese zutreffen und nun können aus den Treffern in den Konditionen die Werte in / &id=%2&model=%1 übernommen werden.

Also, nicht von oben nach unten innerhalb eines Blocks

prüfe Bedingungen -> finde Regel -> liefere aus

sondern

finde Regel -> prüfe Bedingungen -> liefere aus


Wenn Du Dich dazu entschließen würdest, die id immer am Ende vor .php einzufügen, könnte es so aussehen. Ist ungetestet, nur so würde ich mit den Tests beginnen und vor jedem neuen Test den Cache löschen, sonst zieht der sich die letzte Verbindung wieder rein.

"https://www.domain.de/index.php?content ... ic-15-zoll"

"https://www.domain.de/productinfo/anthr ... zoll-5.php"

Code: Alles auswählen

RewriteRule ^productinfo/([a-zA-Z0-9_-]+)-([0-9]+)\.php$ /index.php?content=productinfo&id=$2&model=$1  [L]

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

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 26.11.2012, 17:43
von Stelufl
Hallo,

danke für die Antwort. Deine Argumente machen Sinn, jetzt habe ich es auch verstanden :D

Ich habe es nun mit Deiner Hilfe geschafft.

Danke nochmal.