Seite 1 von 1

Produktname statt der Produkt-ID in der URL

Verfasst: 05.11.2009 12:04
von wipage
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

Verfasst: 05.11.2009 18:14
von Gumbo
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.

Verfasst: 09.11.2009 15:39
von wipage
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

Verfasst: 09.11.2009 16:52
von Gumbo
Der allgemeinste Ansatz wäre „.+“ oder für ein Pfadsegment „[^/]+“ zu verwenden, etwa:

Code: Alles auswählen

RewriteRule ^([^/]+)/([^/]+)$ $1.php?bezeichnung=$2

Verfasst: 10.11.2009 12:04
von wipage
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

Verfasst: 11.11.2009 18:10
von Gumbo
Tja, wenn die Produktbezeichnung nicht eindeutig ist, kannst du sie auch nicht als Identifikation verwenden.

Verfasst: 11.11.2009 18:20
von wipage
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.

Verfasst: 11.11.2009 22:51
von Gumbo
Du kannst aber auch numerische ID und Produktbezeichnung verwenden.

Verfasst: 16.11.2009 15:02
von wipage
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 ... parameter2

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!

Verfasst: 17.11.2009 10:58
von Gumbo
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.