Zur Navigation

sef urls mit mysql

1 Max (Gast)

Hallo,

Ich möchte sef urls für mein cms system erstellen und zwar mit Mysql.

Also ich möchte das man den datei-namen einer html Seite selber bestimmen kann per mysql.

Diese Url:

/index.php?action=ausgabes&task=1

soll in

irgendeinname.html

umgewandelt werden.

Wie kann man sowas umsetzen mit der htaccess, php und mysql?

gruß

Max

17.12.2005 18:17

2 Jörg

Hallo Max,

das würde gehen, wenn irgendeinname eine Variable ist, die in einer eigenen Spalte der betreffenden MySQL Datenbank-Tabelle gespeichert ist. In diesem Forum nehme ich beispielsweise den Titel des Threads und baue diesen beim Verlinken in die URL ein - hier z.B. den Titel "aus sef urls mit mysql" in die URL "sef-urls-mit-mysql-t-457-1.html". Die ID des Threads (hier:457) nehme ich auch noch mit hinein, weil der Titel nicht eindeutig ist, er könnte ja auch mehrfach vergeben werden.

Damit diese Links auch funktionieren, muss man die statische URL intern mit mod_rewrite auf die eigentliche URL auflösen, z.B. für...

irgendeinname-1.html > /index.php?action=ausgabes&task=1
irgendeinanderername-2.html > /index.php?action=ausgabes&task=2
etc.

... folgende Regel in der .htaccess:


RewriteEngine On
RewriteBase /
RewriteRule ^(.+)-([0-9]+)\.html$ index.php?action=ausgabes&task=$2

mfG Jörg

17.12.2005 18:36 | geändert: 17.12.2005 18:40

3 Max (Gast)

Okay! Danke.
Aber was ich noch nicht ganz verstehe:
wie bekommt die .htaccess die Variable mit dem Namen der html datei?

Vielen Dank!

lg

Max

17.12.2005 18:53

4 Jörg

Die .htaccess übersetzt nur von der statischen in die dynamische URL. Den Namen baust du einfach in die Links des CMS ein. Wenn der User auf den Link klickt, schickt Der Browser dann eine Anfrage mit dieser URL an den Server. Der schaut als erstes in die .htaccess und sieht dann die passende Anweisung für die (Rück-)Übersetzung, mit dessen Hilfe er (für sich) die URL in die dynamische URL zurückverwandeln kann.

mfG Jörg

17.12.2005 19:10 | geändert: 17.12.2005 19:13

5 Max (Gast)

Achs so!
Dann könnte ich zum Beispiel, damit man zwischen statischen und
dynamischen urls entscheiden kann, eine sef.php erstellen und darin zum Beispiel die url index.php?action=ausgabes&task=1 zerlegen.
Aber wie wende ich dann die sef.php,wenn die sef urls aktiviert wurden, auf die anderen php seiten an, damit diese urls
"index.php?action=ausgabes&task=1"
in jeweiligen Skripten, automatisch durch sef urls ersetzt werden.

Also index.php?action=ausgabes&task=1
wird durch

irgendwas.html

ersetzt.

gruß

Max

17.12.2005 19:42

6 Jörg

Falls die SEF-URLs nicht automatisch über die Konfiguration des CMS "aktiviert werden" können, und falls es auch kein entsprechendes Mod für das CMS gibt, musst du in allen PHP-Dateien die Links manuell ändern.

mfG Jörg

17.12.2005 19:58

7 Sven

KLeiner Tipp dazu: Wenn dein CMS nicht zufällig mit dem output speicher von php arbeitet kannst du am anfang und am ende der scripte ainfach die komplette ausgabe abfangen udn in den speicher laden. darin dann alle urls umschreiben und ert dann die ausgabe an den browser schicken.

stichwort: ob_start();

19.12.2005 00:03

Beitrag schreiben (als Gast)





[BBCode-Hilfe]