Jörg Reinholz: Eigenen einfachen Permalink erstellen?

Beitrag lesen

Moin!

Steht darin dann eine Weiterleitung von der reinen text-url zur parameter-url? Heißt das dann, das jeweils, bei einer neu erstellten Anzeige, die htaccess-Datei um eine neue Weiterleitung ergänzt werden muss?

Nein. In der von von mir verlinkten Quelle steht wie man das mit einem regulärem Ausdruck löst:

URI:

  • http://example.com/shop/Elektronik/toller_staubsauger-0815

soll wie

  • http://example.com/shop.php?item=0815 behandelt werden.

in der htaccess:

RewriteEngine on
RewriteRule   ^/shop/.*-(\d+)$      	/shop.php?item=$1 [L]

Was das tut:

1.)
^/shop/ Suche alles, was mit /shop/ beginnt und mit
.*- beliebigen Zeichen in beliebiger Anzahl, gefolgt von einem Minus fortgesetzt wird und dem
(\d+) mindestens eine Ziffer folgt, deren Gruppe Du Dir in $1 gut merkst (die Klammern) und die
$ am Ende des Strings steht.

2.) Verarbeite das weiter als sei es die URI

/shop.php?item=
gefolgt von den gut gemerkten Ziffern.

Dann wird
http://example.com/shop/Elektronik/toller_staubsauger-0815
behandelt wie:
http://example.com/shop.php?item=0815

und
http://example.com/shop/foo/bar-223
behandelt wie:
http://example.com/shop.php?item=223

Im Skript shop.php steht die übermittelte ID wie gehabt in: $_GET['id'], die ich aber wegen möglicher Fehlangaben putzen würde: $_GET['id']=intval(trim($_GET['id'])). Dann wird aus '0815' auch die Zahl 815. Unter dieser ID als Zahl ist (hoffentlich, alles andere wäre sehr schlecht) der Artikel bzw. die Anzeige auch in der Datenbank gespeichert. Vergeben wird die automatisch, wenn der Artikel eingestellt wird. Lese hierzu unter auto_incement nach. Die URI(s) zusammen zu bauen ist dann triviale Textverarbeitung.

PHP kann je nach verwendeter Methode des Datenbankzugriffs diese ID auch zurück geben, falls Du das brauchst:

Die Seite mit der veralteten Datenbankzugriffsmethode verweist im Kasten "Warnung" auf die aktuellen, gebotenen Vorgehensweisen:

Jörg Reinholz