Grundsätzliche Fragen

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Beitragvon Gumbo » 16.01.2009 12:43

Jetzt also doch mit „/shop/“ am Anfang? Na gut, dann muss ja nur das Suchmuster angepasst werden:
Code: Alles auswählen
RewriteRule ^shop/([^/-]+-)+(\d+)\.html$ /shop/product_detail.php?id=$2 [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon gecko » 16.01.2009 13:32

Hallo Gumbo,

danke für den Tipp.
Das hatte ich aber alles schon in diversesten Varianten durchprobiert. Immer "404".
Auch die Weiterleitung nach example.com bringt nur "404".
Da kann es doch nur noch an der RewriteRule an sich liegen, oder?

Viele Grüße

Der Gecko
gecko
.
.
 
Beiträge: 11
Registriert: 13.01.2009 14:44

Beitragvon gecko » 17.01.2009 16:13

Hallo Gumbo,

viele Stunden (und sehr viele "404-Error") später hat es jetzt endlich geklappt! :D
Folgende RewriteRule hat letztendlich zum (sauer verdienten) Erfolg geführt:

Code: Alles auswählen
RewriteRule ^([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]

Ich weiß zwar jetzt nicht ob das die perfekte Lösung ist aber immerhin funktioniert es.

Vielen herzlichen Dank an dich und das Forum hier!
Alleine hätte ich das nie geschafft...

Jetzt habe ich aber noch eine Frage:
ich habe noch weitere URLs die auf Seiten im gleichen Verzeichnis umgeleitet werden sollen.
Z.B. meineseite.de/shop/sonderangebote_detail.php?id=27 oder meineseite.de/shop/spezialitäten_detail.php?id=27 oder ähnliches.
Problem 1: die umgeschriebenen URLs sind vom Prinzip her gleich aufgebaut bzw. haben teilweise Wörter und Zahlen wüst durcheinander.
Problem 2: es kann mehrfach die gleiche id-nummer geben.

Wie schaffe ich es, daß die Links auf die richtige php-Seite geleitet werden?
Habe da schon an diversesten Lösungsansätzen gebastelt, momentan wird aber alles noch an die "product_detail.php" geleitet (wenn überhaupt)...

Vielen herzlichen Dank!

Der Gecko
gecko
.
.
 
Beiträge: 11
Registriert: 13.01.2009 14:44

Beitragvon Gumbo » 17.01.2009 17:25

Du könntest ein Präfix als Unterscheidungsmerkmal verwenden, etwa:
Code: Alles auswählen
RewriteRule ^produkte/([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
RewriteRule ^sonderangebote/([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
RewriteRule ^spezialitäten/([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon gecko » 31.01.2009 10:51

Hallo Gumbo,

komme erst jetzt dazu das mal zu bearbeiten und es klappt prima! Danke!
Ich musste allerdings die Rewrite Rules
Code: Alles auswählen
RewriteRule ^produkte/([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
RewriteRule ^sonderangebote/([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
RewriteRule ^spezialitäten/([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]


ändern und aus dem ersten "/" ein "-" machen
Code: Alles auswählen
RewriteRule ^produkte-([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
RewriteRule ^sonderangebote-([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]
RewriteRule ^spezialitäten-([^/]+-)+([0-9]+)\.html$ /shop/product_detail.php?id=$2 [L]


Es wurde da wohl ein Ordner "Produkte" erwartet den es nicht gibt.
Jetzt steht halt das jeweilige Wort "Produkte" bzw. "Spezialiäten" usw. so in der URL:

Code: Alles auswählen
"meineseite.de/shop/Spezialitäten-100-gramm-Gammelfleisch-27.html"


und das klappt bestens. Danke!

Hätte jetzt nur noch eine kleine "Schönheitsoperation":
ich würde gerne die "ID", also in diesem Fall die "27" am Ende aus der URL entfernen.
Das entfernen an sich ist ja kein Problem, nur dann wird natürlich die Seite "php?id=27" nicht mehr gefunden...
Bin jetzt schon wieder seit Stunden hier am suchen und lesen, komme aber nicht drauf.
Habe was gelesen von einem PHP-Script usw.
Ist das die Lösung? Und wenn ja: wie baue ich das auf? Wo sollte das hin? Muss ich dann auch an der RewriteRule etwas ändern?
Würde mich über einen (auch für mich verständlichen :oops: ) Tipp riesig freuen!
Vielen Dank!

Der Gecko
gecko
.
.
 
Beiträge: 11
Registriert: 13.01.2009 14:44

Vorherige

Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron