artikel.php?id=14472 -> artikel/titel-des-eintrags-14472

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

artikel.php?id=14472 -> artikel/titel-des-eintrags-14472

Beitragvon ViperTK » 11.05.2010 17:47

Hab jetzt folgende RewriteRules erstellt.

Code: Alles auswählen
RewriteEngine on
RewriteRule ^([^/.]+)$ $1.php [L]
RewriteRule ^([^./]+)/([^/.]+)$ $1.php?site=$2 [L]


Damit kann ich jetzt beispielsweise
index.php?site=showdetails&id=1
in
/index/showdetails/1

Jedoch hätte ich jetzt dazu eine Frage, über die ich schon länger am senieren bin, jedoch immernoch nicht wirklich weiss wie dafür die RewriteRule aussieht bzw. wie man das ganze überhaupt handhabt.

Code: Alles auswählen
http://www.domain.de/artikel/14472/css-interview-mit-kai-kai-schafer-man-kann-nie-genug-fur-die-eps-vorbereitet-sein_css/

Wie bekomme ich eine solche RewriteRule hin?
Bzw. weiss ich ja, dass die dort zu sehende URL einfach nur unsichtbar für uns User weitergeleitet wird an beispielsweise an
Code: Alles auswählen
http://www.domain.de/artikel.php?id=14472

Was ich mir allerdings noch nicht erklären kann, wie ich aus der id 14472 dann den Title bekomme, den ich dann mit in die neue statische URL einfüge?
Was muss ich hierfür vll sogar an der artikel.php ändern, oder wie kann man das ganze überhaupt angehen und umsetzen?

Ich bedanke mich wieder einmal recht herzlich im Voraus bei allen die evtl. einen Tip für mich bereit haben.

Liebe Grüße
ViperTK
ViperTK
.
.
 
Beiträge: 4
Registriert: 06.05.2010 15:14

Re: artikel.php?id=14472 -> artikel/titel-des-eintrags-14472

Beitragvon quetschke » 26.07.2010 12:37

Manchmal wäre es schon schön, wenn man sich vorher einmal etwas in das Thema einliest, zu dem man eine Frage stellt. Dann hättest du nämlich recht schnell herausgefunden, dass mod_rewrite *nicht* deine eigentlichen Links ändert, sondern nur dem Server übermittelte Anfragen umschreiben kann. Du musst also erst in deinen Scripten die URLs in das neue Layout ändern. Dann kann dir mod_rewrite helfen, dass der Server auch weiß, was er mit diesen neuen URLs - die es ja eigentlich nicht gibt - anfangen soll.
Das ginge dann so:
Code: Alles auswählen
RewriteEngine On
RewriteRule ^artikel/([0-9]+)(/[^/]+)?/?$ artikel.php?id=$1 [L]

Ob der Titel-Name zur ID passt, kann so einfach mit mod_rewrite nicht geprüft werden. (Man könnte aufwendig etwas mit einer RewriteMap machen, das wäre aber umständlich und unhandlich.)
Daher schreibt die genannte Regel sowohl artikel/1234 als auch artikel/1234/echter-name/ und artikel/1234/falscher-name/ auf artikel.php?id=1234 um. Du solltest also im PHP-Script selbst noch einmal mithilfe von preg_match und $_SERVER['REQUEST_URI'] prüfen, ob der korrekte Name übermittelt wurde und - wenn nicht - einen 301-Redirect auf die korrekte Adresse durchführen, um Duplicate-Content zu vermeiden.
quetschke
.
.
 
Beiträge: 346
Registriert: 27.02.2005 13:50


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

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

cron