[[Vorlage(Getestet, general )]] {{{#!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. Das Modul ist unter Ubuntu in der Apache 2 Installation bereits vorhanden und muss nicht separat installiert 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 = == Alles auf HTTPS umleiten == Mit folgenden Zeilen innerhalb eines Virtual Hosts für Port 80 werden alle Anfragen permanent auf ihre `https://`-Äquivalente umgeleitet. Permanente Weiterleitungen werden von Browser gemerkt, was in diesem Fall erwünscht ist. {{{#!code apache ServerName example.com ... RewriteEngine on RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] }}} == Nur Verzeichnis auf 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. Im folgenden ein Beispiel für eine "Teil-Umleitung" 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. RewriteRule ^.* - [F] }}} könnte man z.B. einen kompletten IP-Bereich wie `123.456.789.*` komplett aussperren. Mit RewriteCond definieren wir die Bedingung( Es sind mehre möglich diese werden mit [OR] verknüpft) unter der die RewriteRule gilt. = 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 * [selfhtmlwiki:Webserver/htaccess/Umleitungen_mit_mod_rewrite:Umleitungen mit mod_rewrite] # tag: Internet, Netzwerk, Server, Apache