Produktname statt der Produkt-ID in der URL

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

Produktname statt der Produkt-ID in der URL

Beitragvon wipage » 05.11.2009 12:04

Hallo,

folgendes Problem beschäftigt mich seit geraumer Zeit:

Beim Aufruf eines Produktes aus der Online Datenbank soll in der Adresszeile des Browsers statt der Produkt-ID die Bezeichnung ausgegeben werden.

Beispiel

Die URL sieht so aus:
http://www.domain.de/hersteller.php?Produkt-ID
z.B. http://www.meine-seite.de/nivea-automobile.php?115

Was ich in der Adresszeile meines Browsers sehen möchte ist:
http://www.domain.de/Hersteller/Produkt-Name
z.B. http://www.meine-seite.de/nivea-automob ... ubenzieher

Mir schwebt vor, für jedes Produkt in der Datenbank einen entsprechenden Eintrag in der .htaccess zu machen. Dies ließe sich leicht mit einem PHP Script automatisieren.

Frage 1:
Bin ich mit meinen Überlegungen auf dem richtigen Weg?

Frage 2:
Wie müsste in meinem konkreten Fall die RewriteRule aussehen?

Ich bin in Sachen Mod-Rewrite noch vollkommen ohne Erfahrung und hoffe daher auf Eure Hilfe.


Vielen Dank im voraus.
Wipage
wipage
.
.
 
Beiträge: 8
Registriert: 01.10.2009 17:39
Wohnort: Gummersbach

Beitragvon Gumbo » 05.11.2009 18:14

Du bist auf dem richtigen Weg. Und da dir als Information in der URL nur die Produktbezeichnung übergeben wird, kannst du auch nur diese verwenden, um das jeweilige Produkt zu identifizieren. Der Rest ist aber zur numerischen ID analog.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon wipage » 09.11.2009 15:39

Vielen Dank für die schnelle Antwort.

Leider ergeben sich aber neue Fragen, und mir wäre auch mit einem Codeschnipsel (ReWrite Rule) geholfen.

Frage:
Die Produktbezeichnung kann ja durchaus aus mehreren Worten bestehen und Umlaute enthalten. Diese Probleme lassen sich natürlich herausfiltern. Aber wie wirkt sich das auf die Rewrite Rule aus?


Nochmal vielen Dank im voraus
Wipage
wipage
.
.
 
Beiträge: 8
Registriert: 01.10.2009 17:39
Wohnort: Gummersbach

Beitragvon Gumbo » 09.11.2009 16:52

Der allgemeinste Ansatz wäre „.+“ oder für ein Pfadsegment „[^/]+“ zu verwenden, etwa:
Code: Alles auswählen
RewriteRule ^([^/]+)/([^/]+)$ $1.php?bezeichnung=$2
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon wipage » 10.11.2009 12:04

Vielen Dank für die schnelle Antwort.

Leider hilft mir die aber noch nicht weiter.

Die Aufgabenstellung ist, dass der Zugriff auf die Produkte über die Produkt-ID erfolgt. Als Ausgabe in der Adresszeile des Browsers soll jedoch der Hersteller und die Produktbezeichnung stehen.

Der Zugriff über die Bezeichnung, wie in dem Codeschnipsel vorgeschlagen, ist nicht möglich, da nicht gewährleistet werden kann, dass die Produktbezeichnungen eindeutig sind.

Also aus

www.domain.de/hersteller.php?[Produkt-ID]+[Steuerwert]+[Steuerwert]

soll in der Browser-Adresszeile

www.domain.de/hersteller/produktbezeichnung

werden.


Dazu ein paar Fragen (die offenbaren, dass ich in Sachen mod_rewrite noch völlig unerfahren bin):

Was ist, wenn die Produktbezeichnung Leer- bzw. Sonderzeichen enthält?

Wie muss dies bei der RewriteRule berücksichtigt werden?

Ich stelle mir vor, die .htaccess dynamisch mit einem PHP Script zu pflegen, und für jeden Artikel einen Eintrag dort vorzunehmen. Wäre dies ein richtiger und praktikabler Lösungsansatz?


Für eine schnelle Antwort mit der zum Ziel führenden RewriteRule wäre ich sehr dankbar.

Vielen Dank im voraus
Wipage
wipage
.
.
 
Beiträge: 8
Registriert: 01.10.2009 17:39
Wohnort: Gummersbach

Beitragvon Gumbo » 11.11.2009 18:10

Tja, wenn die Produktbezeichnung nicht eindeutig ist, kannst du sie auch nicht als Identifikation verwenden.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon wipage » 11.11.2009 18:20

Hallo,

Tja, wenn die Produktbezeichnung nicht eindeutig ist, kannst du sie auch nicht als Identifikation verwenden.

das ist mir mittlerweile auch klargeworden. Also werde ich sicherstellen, dass die Produktbezeichnung eindeutig ist.

Damit stelle ich meine Fragen erneut und hoffe auf eine Antwort.
wipage
.
.
 
Beiträge: 8
Registriert: 01.10.2009 17:39
Wohnort: Gummersbach

Beitragvon Gumbo » 11.11.2009 22:51

Du kannst aber auch numerische ID und Produktbezeichnung verwenden.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon wipage » 16.11.2009 15:02

Irgendwie verwirrt mich das alles mehr, als dass es Klarheit schafft.

Hier noch einige neue Infos zur konkreten Aufgabenstellung:

Seitenaufruf: www.domain.de/hersteller.php?Produkt-ID+Steuerparameter1+Steuerparameter2

Beispiel: www.domain.de/milka.php?123+0+0

Der Seitenaufruf enthält drei Commandline Parameter:

Produkt-ID
Produkt-ID des ausgewählten Artikels, wobei nur die Produkt-ID als Parameter übergeben wird und nicht, wie sonst häufig "produkt_id=[Produkt-ID]"

Steuerparameter1
Schalter, der entweder 0 oder 100 sein kann.
0 = Produkt aus angezeigtem Produktkatalog ausgewählt.
100 = Produkt aus Suche über Suchformular (die PHP-Datei heißt dann "suchergebnis.php").

Steuerparameter2
ID der Produktserie, welcher der ausgewählte Artikel angehört.

Alle drei Parameter werden zur Seitensteuerung benötigt.

Die gewünschte URL lautet idealerweise: www.domain.de/Hersteller/Produktbezeichnung

1. Frage:
Kann ich dies mit ModRewrite erreichen?

2. Frage:
Wie sieht die erforderliche Syntax aus?

3. Frage:
Wenn die beiden Steuerparameter ein Problem darstellen, wie könnte die URL inklusive der beiden Parameter aussehen?

Vielen Dank im voraus für Eure Hilfe!
wipage
.
.
 
Beiträge: 8
Registriert: 01.10.2009 17:39
Wohnort: Gummersbach

Beitragvon Gumbo » 17.11.2009 10:58

Erst einmal musst du wissen, dass Informationen nicht aus dem Nichts entstehen. Das heißt wenn die beiden Steuerparameter notwendig sind, musst du sie auch in der URL unterbringen. Und auch nur wenn die Kombination aus Hersteller und Produktbezeichnung eindeutig ist und von ihnen auf die Produkt-ID geschlossen werden kann, kannst du sie anstatt der Produkt-ID verwenden.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron