Dieser Artikel widmet sich dem Thema mod_rewrite, zu dem vielleicht bei dem ein oder anderen hin und wieder die selben Fragen auftauchen.
Was ist “mod rewrite” oder mod_rewrite?
Erstens: mod_rewrite ist eine Einstellung des Apache-Servers. D.h. mod_rewrite ist entweder an (enabled) oder aus (disabled).
Zweitens: Wenn mod_rewrite an ist, so können URLs umgeleitet werden. D.h. die folgende URL …
1 2 3 |
www.codesolutions.de/2014/juli/magento/interessanter-artikel |
… wird durch die Einstellungen von mod_rewrite umgeformt zu:
1 2 3 |
www.codesolutions.de/?year=2014&month=juli&article=magento-interessanter-artikel |
Wie stelle ich fest, ob mod_rewrite aktiv ist?
Ganz einfach: Erstelle eine leere php-Datei mit dem Inhalt:
1 2 3 4 5 |
<?php phpinfo() ?> |
Rufe diese auf dem Browser auf und suche mit der Suchfunktion des Browsers nach “mod_rewrite”. Wenn du einen Eintrag findest, wie im Screenshot dargestellt, so ist mod_rewrite an.
Eine andere Möglichkeit ist, einfach in der Shell den Befehl
php -info einzugeben und dann zu schauen, ob mod_rewrite unter der Rubrik “Loaded Modules” auftaucht.
Wie aktiviere ich mod_rewrite, wenn es nicht aktiv ist?
Ich möchte hier zwei Möglichkeiten vorstellen, mod_rewrite zu aktivieren. (Es gibt noch eine dritte, sehr einfache Variante, die manchmal am Effektivsten ist: Nämlich einfach den Hoster anzufragen, ob er mod_rewrite aktivieren kann. Manchmal ist dies auch nötig, denn bei bestimmten Hostern sind die Rechte für die Apache-Cofing-Datei beschränkt und man hat gar keine andere Möglichkeit)
1. Die schnelle Variante, mod_rewrite zu aktivieren:
Gebe in der Shell von Linux einfach folgenden Befehl ein:
1 2 3 |
sudo a2enmod rewrite |
Dann musst Du noch den Apache-Server neustarten:
1 2 3 |
sudo /etc/init.d/apache2 restart |
Falls dann in der Shell folgendes auftreten sollte …
1 2 3 |
-bash: a2enmod: command not found |
… versuche es mit Möglichkeit 2:
2. mod_rewrite in apache-Config-Datei anschalten
Das ist etwas kniffliger: zuerst musst du die Datei apache2.config finden, was allerdings sehr einfach über folgenden Shell-Befehl geht:
1 2 3 |
ps -ef | grep apache |
Hierdurch findest du Einträge wie:
1 2 3 |
root 4072 1 0 Jan29 ? 00:05:38 /usr/sbin/apache2 -k start |
Dann gibst du folgenden Befehl ein:
1 2 3 |
/usr/sbin/apache2 -V |
Und du solltest als Ausgabe sehen, wo die HTTPD_ROOT-Directory ist und wie das SERVER_CONFIG_FILE heißt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Server version: Apache/2.2.22 (Debian) ... Server compiled with.... ... -D HTTPD_ROOT="/etc/apache2" ... -D SERVER_CONFIG_FILE="apache2.conf" |
nun weißt du, wie der Pfad zur Datei lautet und kannst diese mit beispielsweise nano (oder alternativ auch per FTP) editieren:
1 2 3 |
nano /etc/apache2/apache2.conf |
Folgende Zeile muss in der Datei enthalten sein:
1 2 3 4 |
LoadModule rewrite_module modules/mod_rewrite.so |
Nun muss nur noch der Apache-Server neu gestartet werden …
1 2 3 |
/etc/init.d/apache2 restart |
Und mod_rewrite sollte aktiviert sein.