mod rewrite
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
"mod_rewrite
" ist ein Apache-Modul, um URLs zu manipulieren. Mit der RewriteEngine des Apache-Webservers ist es möglich, die angeforderte URL anhand von Regeln "umzuschreiben" (en: to rewrite). Basierend auf einem Parser für Reguläre Ausdrücke kann die angeforderte URL manipuliert werden.
mod_rewrite¶
Als erstes muss das Modul aktiviert werden
sudo a2enmod rewrite
Das Verzeichnis für die Prozess-ID fehlt eventuell, man muss es daher mit
sudo mkdir -p /var/run/apache2 sudo chown -R www-data /var/run/apache2
anlegen. Schließlich muss die Konfiguration von Apache wieder neu eingelesen werden
sudo /etc/init.d/apache2 force-reload
Modul nutzen¶
Üblicherweise wird die Rewrite-Bedingungen direkt über .htaccess-Dateien in den entsprechenden Verzeichnissen des Webservers festgelegt.
RewriteEngine on RewriteCond ...
Um das Modul in .htaccess-Dateien zu aktivieren, muss meist noch im Verzeichnis /etc/apache2/sites-enabled/ die Datei 000-default bzw. default (je nach Version) angepasst werden. Dazu muss die Datei in einem Editor mit Root-Rechten geöffnet werden [2]:
Anschließend muss die letzte Zeile in dieser Passage
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None
geändert werden. Um das Umschreiben von URLs zu erlauben, muss das "None
" durch "FileInfo
" ersetzt werden. Andere mögliche Werte können auf der Apache Webseite 🇩🇪 nachgelesen werden.
Beispiele¶
Webmailer auf https umleiten¶
Oftmals wird z.B. gewünscht, dass gewisse Seiten nur über https erreicht werden können. Ein klassisches Beispiel sind Webmailer wie Squirrelmail oder RoundCube Webmail 🇬🇧 .
In der Datei /etc/apache2/sites-available/default müssen dafür z.B. die Zeilen
RewriteEngine on RewriteRule ^/webmail(.*)$ https://%{SERVER_NAME}/webmail$1 [L,R] RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 2
hinzugefügt [2] werden. Hier würde http://domain.tld/webmail automatisch auf https://domain.tld/webmail umgeleitet werden.
IP-Bereiche aussperren¶
Über die Regel
RewriteEngine on RewriteCond %{REMOTE_ADDR} ^123.456.789. [OR]
könnte man z.B. einen kompletten IP-Bereich wie 123.456.789.* komplett aussperren.
Links¶