Simplephotography

Blogging und Leben im Netz

Tutorial: ExpressionEngine URLs komplett ohne index.php

17. Januar 2005

Mit den aktivierten URL Titles gibt die Expression Engine schon sehr leserlicher und brauchbare URLs aus, zum Beispiel:

http://www.simplephotography.de/index.php/journal/shutterbug_mag_photoblogs/

Ein kleines Manko bleibt, das störende index.php. Die Dokumentation der ExpressionEngine beschreibt zwar, wie die index.php umbenannt werden kann oder wie das .php abgeschaltet werden kann. Es fehlt aber der Hinweis, wie URL komplett ohne dieses Element ausgegeben werden können. Die einzelnen Punkte, die dazu nötig sind sind zwar schon im pMachine Forum besprochen worden. Jedoch sind die Informationen ziemlich verteilt und auch in englischer Sprache. Die Diskussion auf 512mb.net hat mich dazu gebracht, alles in einem kleinen deutschen Tutorial zusammenzufassen. Wie immer gilt, vorher sicherheitshalber ein Backup und das Tutorial wird so, wie es ist veröffentlicht, Garantie gibt es keine. Für Kommentare, Hinweise und Berichtigungen einfach die Kommentarfunktion am Ende des Artikels verwenden oder mir eine Mail schreiben. Lob ist selbstverständlich auch willkommen.

Voraussetzungen

Auf dem Server muss mod_rewrite zur Verfügung stehen, aktiviert sein und durch .htaccess Dateien konfigurierbar sein. mod_rewrite ist ein Modul für den Apache Webserver, darum ist dieses Tutorial auch nicht für andere Server als den Apache anwendbar.

Schritt 1a .htaccess erstellen

Im Hauptverzeichnis der ExpressionEngine muss eine Textdatei mit dem Namen .htaccess erstellt und folgende Zeilen dort hinein kopiert werden.

RewriteEngine On
RewriteCond $1 !^(system|images|index\.php).*
RewriteRule ^([^/]+.*)$ index.php/$1 [NC,L]

Die zweite Zeile muss passend zur eignen Konfiguration angepasst werden. Anstatt system muss der Name des eigenen ExpressionEngine Systemverzeichnisses eingetragen werden. Diese Verzeichnis wurde während der Installation umbenannt. Weiterhin müssen alle zusätzlich erstellen Unterverzeichnisse in die Klammer eingetragen werden. Die Einträge werden immer durch ein Pipe Symbol ( | ; Mac: Alt + 7, Win: AltGr + <) getrennt. Nicht eingetragen werden dürfen Verzeichnisse, die Blogs einhalten, dazu mehr in Schritt 1b. Ebenfalls in die Klammer müssen alle Dateien, auf die extern per Browser zugriffen werden soll. Die ist beispielsweise der Fall, wenn der Zugriff auf das Control Panel verschoben wurde.

Nur für Version 1.3: Alle Benutzer der ExpressionEngine Version 1.3 müssen die zweite Teile noch um das neue Themes Verzeichnis ergänzen, sonst funktioniert das Control Panel nicht mehr korrekt. Damit lautet die zweite Zeile von oben bei Standardkonfiguration:

RewriteCond $1 !^(system|themes|images|index\.php).*

Schritt 2a .htaccess für Unterverzeichnisse mit Blogs

Falls in einem Unterverzeichnis ein Blog erstellt ist, muss die .htaccess von oben um diesen Block erweitert werden. Alle anderen können direkt zu Schritt 2 springen:

RewriteCond $1 ^(foo).*
RewriteCond $1 !^(foo/images|foo/index\.php).*
RewriteRule ^([^/]+)/([^/]+.*)$ /$1/index.php/$2 [NC,L]

In die Klammer der ersten Zeile müssen alle Blogunterverzeichnisse und in die zweite Zeile alle Ausnahmen eingetragen werden, wieder, wie oben durch Pipes getrennt.

Schritt 2

imageDie URLs funktionieren jetzt schon oben index.php. Die ExpressionEngine zeigt sie aber immer noch an. Um das zu verhindern, muss eine Änderung im Control Panel vorgenommen werden. Unter „Admin“ -> „General Configuration“ muss der Inhalt des Felds “Name of your site’s index page” gelöscht und die Einstellung mit leerem Feld gespeichert werden. In allen anderen Einstellungen, zum Beispiel „Weblog Preferences“ muss das index.php erhalten bleiben.

Ich hoffe es ist jetzt klarer und funktioniert. Wie oben schon gesagt, die Kommentare sind freigegeben.

Kommentare

Marcus schrieb am 17. Januar 2005 um 19:54 Uhr:

Wow, danke für diese Ausführlichkeit! Wird sobald wie möglich getestet!

michael schrieb am 19. Januar 2005 um 17:19 Uhr:

Boha,
danke, endlich mal was in Muttersprache erklärt.
danke für die Infos.

michael

Ps: Starke Seite

Thomas schrieb am 22. Februar 2005 um 10:22 Uhr:

Hi.
Danke für die Anleitung.
Man kann übrigens die .htaccess auch Blog-spezifisch für Weblogs in Unterverzeichnissen ablegen; Vorteil: Damit kann man den Templateaufruf auch gleich in die htaccess verbannen und hat den nicht dauernd mit in der URL.

Für Weblogs die in einem Unterverzeichnis liegen und immer das gleiche Template (Templategruppe) haben:

RewriteEngine On
RewriteCond $1 !^(index\.php).*
RewriteRule ^([^/]+.*)$ index.php/$1 [NC,L]
RewriteRule ^([^/]+.*)$ index.php/template/$1 [NC,L]

Zeile 3 ist ein Fallback, falls jemand mit Templateaufruf kommt; und diese htaccess muss ins Unterverzeichnis. Außerdem muss man dann auch die Link-Einstellungen in der Weblog-Admin anpassen.

Jörn schrieb am 17. September 2008 um 13:24 Uhr:

Die Weblog-Path-Einstellungen funktionieren auch mit “weblog-url/” ohne alles weitere…

Jörn

Trackbacklink

Selbst kommentieren

Selbst kommentieren









Livepreview