0251 / 590 837 15
info@a-coding-project.de

Schöne Urls im CMS – Mod Rewrite sei dank – Code & Blog

Code & Blog Logo

Code & Blog Logo

Wie bereits angekündigt sollen die Urls des CMS wieder schön werden. Das heißt, dass die aufzurufenden Seiten nicht mehr als Parameter übergeben werden (zumindest nicht sichtbar für den User), sondern so aussehen, als wären es statische Seiten.

Vorher hatte ich ja beschreiben, dass ich die Dateien wieder mit der Endung php ansprechen möchte. Dort ist mir allerdings ein kleiner Denkfehler unterlaufen, denn dann wird es eine Endlosschleife an Weiterleitungen geben, da die index-Datei ja auch php ist. Nun habe ich mich für die klassische htm-Endung entschieden.

Um die Umleitung von /testseite.htm nach /index.php?include=testseite mit Mod Rewrite zu machen, brauchen wir die Datei .htaccess. Sie liegt im Hauptverzeichnis. Die .htaccess sieht so aus:

RewriteEngine on
RewriteCond %{REQUEST_URI} /(.*).htm
RewriteRule (.*) /index.php?include=%1

In der ersten Zeile wird die RewriteEngine, fürs Mod Rewrite angeschaltet. Danach werden die betreffenden Urls herausgesucht. Diese sind nun in dem %1 gespeichert, mit welchem wir in der nächsten Zeile auch zu unserer index.php weiterleiten.

Nun noch alles hochladen und fertig. So sieht die Seite bei mir aus:

http://cms.stevieswebsite.de/testseite.htm

Info: Die Datei kann mittlerweile anders aussehen.

Verwandte Themen

Kommentare

Akini schrieb am 31.10.2009:

Hi, du hast recht bei mir funktioniert es nicht wenn ich versuche die testeite.htm zu öffne. Blos ist es eigenartig, dass mod_rewrite aktiviert ist. Ich hab die seite auf einer lokalen Entwicklungsumgebung laufen, also Xammplite. Weißt du noch woran es liegen kann?? mfg Akini

Stefan Wienströer schrieb am 31.10.2009:

Also /index.php?include=testseite funktioniert? kannste mir mal die phpinfo und ggfl. die .htaccess zukommen lassen (kannste einfach per Mail an info@stevieswebsite.de? Dann werd ich mal nachsehen, ob dort evtl. noch etwas schief läuft

Max schrieb am 19.11.2009:

Bei mir hat es auch nicht funktioniert, weder lokal am Windows-PC mit Xammplite noch am Linux-Server! Aber so funktioniert es bei mir: RewriteEngine on RewriteRule ^(.*).htm$ index.php?include=$1

Stefan Wienströer schrieb am 19.11.2009:

Werds bei mir auch mal so testen, mal sehen, vielleicht übernehmen wir das.

Soundicate schrieb am 03.01.2010:

Ich wollte auch noch kurz anmerken, dass es bei mir auch nur mit Max' Methode funktioniert (Xammp) Soundicate

St3v3 schrieb am 04.06.2010:

Schließe mich Soundicate an.. geh tnur mit der methode von Max. werde die nun nutzen

Sirblacksoul schrieb am 08.06.2010:

Vorletzter Absatz: die Betroffenden ----&gt; <b>die Betreffenden o. Betroffenen</b>

ScreenEyes schrieb am 24.09.2010:

Bei mir klappt ebenfalls nur die Version von Max.

Stefan Wienströer schrieb am 24.09.2010:

Hat sich mittlerweile leicht verändert, ich hatte es zwischenzeitig so wie Max, nur das hat bei einem System von mir nicht Funktioniert (teste auf 3 Servern). Funktioniert denn die aktuelle? http://code.google.com/p/contentlion/source/browse/trunk/.htaccess?r=62

eddi schrieb am 06.10.2010:

Hallo. Bei mir klappts leider nicht. Ich nutze lokal xampp. Kannst du bitte posten was man alles in der httpd.conf ändern muss? Probiere das schon seit Tagen, komme aber nicht weiter. Momentan seh ich immer eine leere Seite ohne Inhalt.

eddi schrieb am 06.10.2010:

Ich habs doch noch geschafft. War doch schon nah dran. Für alle die die gleichen Probleme haben. Die Lösung: In der httpd.conf ändern: # LoadModule rewrite_module modules/mod_rewrite.so ändern in LoadModule rewrite_module modules/mod_rewrite.so # # Options FollowSymLinks # AllowOverride None # Order deny,allow # Deny from all # ändern in: Options FollowSymLinks AllowOverride All Order deny,allow Deny from all Das sind wohl die globalen Einstellung. Ich weiß nicht, ob das jetzt nötig war. Jedenfalls ist folgednes nötig: Das muss dort eingefügt werden: Options FollowSymLinks AllowOverride All Order allow,deny Allow from all Man muss das spezielle Verzeichnis angeben. In dem Alles liegt. Bei mir unter CMS. Man muss dann halt den Pfad entsprechend anpassen.

eddi schrieb am 07.10.2010:

@admin: Die Kommentarfunktion löscht einige Zeichen. So fuktioniert das nicht. Du kannst das ja entsprechend ändern, daß es passt. Kannst mich ja ne Mail schicken, dann schick ichs dir.

Stefan Wienströer schrieb am 07.10.2010:

Die Zeichen werden aus Sicherheitsgründen von Wordpress selbst gelöscht, da hab ich keinen Einfluss. Es ist so, dass bei dir Mod Rewrite nicht aktiviert war, was so nichts mit ContentLion zu tun hat und an der Serverkonfiguration liegt. Eine Erklärung ist zum Beispiel auch hier zu finden: http://www.entwicklerblog.net/server/mod_rewirte-bei-apache2-aktivieren/

Chris schrieb am 30.11.2010:

ich bin grad dabei das ganze CMS auf meinem Rechner lokal mit xampp zu installieren. Bis hier hin klappt auch alles. Nur wenn ich jetzt versuche "localhost/verzeichnis/testseite.htm" zu öffnen, dann werde ich sofort zur Xampp startseite weitergeleitet . ModRewrite ist aktiviert. ich weis nicht wo der fehler ist .

Stefan Wienströer schrieb am 30.11.2010:

Zu dem Stand werden Unterverzeichnisse noch nicht unterstützt. Wenn du sie trotzdem haben möchtest, musst du statt RewriteRule (.*) /index.php?include=%1 folgendes Schreiben: RewriteRule (.*) /verzeichnis/index.php?include=%1

Chris schrieb am 01.12.2010:

das hab ich jetz gemacht . Aber es funktioniert immer noch nicht ganz. Ich werde jetzt immer auf die Error seite weitergeleitet .

Micha schrieb am 27.12.2010:

Hallo, ich hatte auch das Problem wie Chris. Bei mir lag es daran das er aus "testseite.htm" nicht "testseite.php" sondern "testseitehtm.php" gemacht hat was an der filterfilename.php liegt. Dort habe ich einfach nach $filename = strtolower($filename); diese Codezeile eingefügt: $filename = str_replace(".htm","",$filename); und siehe da der Aufruf von "localhost/mycms/testseite.htm" klappt^^

Patrick schrieb am 05.01.2011:

Hallo, Wenn ich die Datei anwähle: ".../testseite.htm" kommt: " Verboten Sie haben keine Berechtigung zum Zugriff auf / testseite.htm auf diesem Server. " nur in English Warum habe ich keine Berechtigung mehr wenn ich die .htaccess auf dem server habe?

Stefan Wienströer schrieb am 05.01.2011:

hast du mod rewrite?

Patrick schrieb am 05.01.2011:

Ja, das ist sogar in den servereinstellungen auf "on"

alex schrieb am 24.01.2011:

Muss dann die Funktion nicht so heissen: function filterfilename($filename){ if ($filename == "content/articles/") { $filename .= "content/errors/404"; } $filename = strtolower($filename); $filename = str_replace(".htm","",$filename); $filename = preg_replace("/[^a-z0-9-/]/i","",$filename); if($filename[0] == "/"){ $filename = substr($filename,1); } $filename .= ".php"; return $filename; } also statt $filename .= ".php"; ---- $filename .= ".htm";

Stefan Wienströer schrieb am 24.01.2011:

macht Sinn. In der aktuellen Version sieht die Funktion übrigens so aus: http://svn.contentlion.org/filedetails.php?repname=contentlion-core&path=%2Fsystem%2Ffilterfilename.php

Tobias B, schrieb am 05.03.2011:

Bei mir funktioniert die aktuelle methode auch nicht bei neuinstallation. max methode hingegen schon :) lg tobi

Tobias B, schrieb am 05.03.2011:

ok muss mich berichtigen es funktioniert gar nicht :) lese nu schon ne std über mod rewrite und sobald ich was änder an der htaccess stürzt mir xampp ab :(

Julian schrieb am 23.04.2011:

Bei mir wird folgendes ausgegeben: Warning: include(content/articles/projektarbeit/testseite) [function.include]: failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/projektarbeit/index.php on line 4 Warning: include() [function.include]: Failed opening 'content/articles/projektarbeit/testseite' for inclusion (include_path='.:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear') in /Applications/XAMPP/xamppfiles/htdocs/projektarbeit/index.php on line 4 Was kann ich machen? Meine htaccess-Datei: RewriteEngine on RewriteCond %{REQUEST_URI} /(.*).html RewriteRule (.*) /projektarbeit/index.php?include=%1 Frohe Ostern allerseits!

blobse schrieb am 30.05.2011:

@Julian Du hast dein Problem bestimmt schon gelöst. Aber falls jemand das selbe Problem mit unterverzeichnissen hat. RewriteEngine on RewriteCond %{REQUEST_URI} UNTERVERZEICHNIS/(.*).htm RewriteRule (.*) index.php?q=%1 Einfach das "UNTERVERZEICHNIS" passenderweise ersetzten und den rootslash vorm index entfernen ;D

Raphael schrieb am 10.06.2011:

ja ich hab jetzt hie auch mal angefangen und hab imer noch das selbe problem ich arbeite auch mit xampp und habe das problem das wenn ich http://localhost/cms/testseite.htm eingebe das ich auf die xampp start seite komm. aber wenn ich http://localhost/index.php?include=testseite eingebe dann funze es aber woran kann das ligen Mod Rewrite ist an? würde mich über hilfe sehr freun

Raphael schrieb am 10.06.2011:

sorry für doppel post hab die adresse falsch geschriben ^^ http://localhost/cms/index.php?include=testseite das ist der lick der geht

Nils schrieb am 19.11.2011:

Hi, wollte da auch mal probieren, aber wenn ich versuche die testseite.htm aufzurufen kommt der Fehler Objekt nicht gefunden!. Habe es in der .htaccess schon mit verschiedensten relativen Pfaden versucht, bekomme aber immer den selben Fehler. Mod_Rewrite ist an und auch die hier beschriebenen Änderungen in der httpd.conf habe ich alle gemacht, bis jetzt alles mit dem Ergebnis, dass ich den Fehler immer wieder bekomme. Habe XAMPP unter Windows bei mir auf dem Rechner. Wer eine Idee hat bitte melden

Stefan Wienströer schrieb am 19.11.2011:

Hi, Mod-Rewrite unter XAMPP ist immer sonne Sache. Du kannst ja mal über phpinfo() nachsehen obs wirklich aktiv ist. Eine Alternative wäre http://blog.stevieswebsite.de/2009/08/virtuellen-server-erstellen-mit-virtualbox/ . In der nächsten Version von ContentLion wird übrigens Mod Rewrite optional. Wir informieren dich, über contentlion.org oder Social Networks(dort verlinkt) wenn es soweit ist.

andrej schrieb am 02.02.2012:

hi, super tutorial! bis jetzt klappt alles prima. vielen dank.. hab einen fehler gefunden: "In der ersten Zeile wird beschrieben, dass die RewriteEngine, die fürs Mod Rewrite benötigt wird." - da fehlt irgendwie ein teil im satz.. lg andré

Stefan Wienströer schrieb am 02.02.2012:

Halbe Sätze regen die Kreativität an ;-) Habs geändert.

Dies ist ein Beitrag aus der Aktion Code & Blog, in der hier ein eigenes CMS erstellt wird.