[[Vorlage(Getestet, general )]] [[Vorlage(Ausbaufähig, "Es könnten noch ein oder zwei Beispiele ergänzt werden, z.B. wie man alle Anfragen auf https umleitet.")]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(1)]] "mod_rewrite" ist ein Apache-Modul, um URLs zu manipulieren. Mit der RewriteEngine des Apache 2.4 Webservers ist es möglich, die angeforderte URL anhand von Regeln "umzuschreiben" (auf englisch: 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 {{{#!vorlage Befehl sudo a2enmod rewrite }}} {{{#!vorlage Befehl sudo a2enmod actions }}} Schließlich muss die Konfiguration von Apache wieder neu eingelesen werden {{{#!vorlage Befehl sudo apache2ctl force-reload }}} = Modul nutzen = Üblicherweise wird die Rewrite-Bedingungen direkt über '''.htaccess'''-Dateien in den entsprechenden Verzeichnissen des Webservers festgelegt. {{{#!code apache RewriteEngine on RewriteCond ... }}} Um das Modul in '''.htaccess'''-Dateien zu aktivieren, muss meist noch im Verzeichnis '''/etc/apache2/sites-enabled/''' die Datei '''000-default''' 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 {{{#!code apache +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 in der Dokumentation nachgelesen werden (siehe [#Links Links] am Ende des Artikels). = Beispiele = == Webmailer auf HTTPS umleiten == Oftmals wird z.B. gewünscht, dass gewisse Seiten nur über [wikipedia.org:Hypertext_Transfer_Protocol_Secure:https] erreicht werden können. Ein klassisches Beispiel sind Webmailer wie [:Squirrelmail:] oder [http://www.roundcube.net/ RoundCube Webmail] {en}. In der Datei '''/etc/apache2/sites-available/default''' müssen dafür z.B. die Zeilen: {{{#!code apache 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 {{{#!code apache 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 = * [http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html Dokumentation zu Apache 2.4] {en} {fr} * [http://httpd.apache.org/docs/2.4/rewrite/ Apache 2.4 Rewriting Guide] {en} {fr} - mit vielen typischen Beispielen * [http://www.modrewrite.de/ Modrewrite.de] {de} - Infos, Anleitungen Tutorials und Hilfe zum Apache-Modul * [https://wiki.selfhtml.org/wiki/Webserver/mod_rewrite SELFHTML: Umleitungen mit mod_rewrite] {de} # tag: Internet, Netzwerk, Server, Apache