Clean URLs für technikum29.de

Seit t29v6 nutzt die technikum29.de-Website saubere URLs. Das PHP-basierte t29v6-System kann dabei URLs ohne php-Suffix generieren, welche vom Webserver wieder zurück auf reale Dateien gemappt werden. Dabei wird gleichzeitig die Konsistenz mit alten Links auf die .shtm-Dateiendungen von t29v5 sichergestellt, da nun alle Ressourcen à la

http://www.technikum29.de/de/foo.shtm
http://www.technikum29.de/de/foo.shtml
http://www.technikum29.de/de/foo.php

Weitergeleitet werden auf

http://www.technikum29.de/de/foo

und verarbeitet werden von foo.php.

Apache-Konfiguration

Statt einer mod_rewrite-basierten Lösung wurde sich für eine Lösung mit Apache Multiviews und einem gut konfigurierbarem 404-Handler entschieden. Letzterer übernimmt auch das Mapping der alten .shtm-Links sowie verschobener Geräte-Seiten.

Multiviews schien als einzige Lösung brauchbar, da per mod_rewrite nicht die Existenz einer Datei ohne Dateiendung festgestellt werden kann, sondern nur einer Datei mit einem Suffix.

Die Multiviews-basierte Lösung hat den Nachteil, dass mod_speling nicht mehr verwendet werden kann. Die Apache-Konfiguration reduziert sich auf

	# Multiviews ist die Alternative zur RewriteRule, die foo ohne
	# Suffix cacht. foo.php leitet auf PHP-Level auf foo weiter (siehe
	# ENV unten).
	Options +MultiViews
	# Speling macht foo.shtm -> 300 multiple choices
	# Soll aber per 404 gecacht werden und auf foo.php weiterleiten,
	# falls existent.
	#CheckSpelling on
	AllowOverride None

	RewriteEngine On

	# ENV-Var um php-Endungen wegzustrippen (hier mit multiviews)
	SetENV T29URLHIDESUFFIX True

Wichtig ist vor allem die Environment-Variable, anhand der das t29v6-System erkennt, dass es die Dateiendungen wegstrippen kann. Das wird vor allem von der Datei host.php erledigt.

Last modified 10 years ago Last modified on Mar 6, 2013, 3:17:59 AM
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License