[[Vorlage(Getestet, precise, lucid)]] {{{#!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-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 {{{#!vorlage Befehl sudo a2enmod rewrite }}} Das Verzeichnis für die Prozess-ID fehlt eventuell, man muss es daher mit {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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. {{{#!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''' 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 {{{#!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 auf der [http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride Apache Webseite] {de} nachgelesen werden. = 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 http://domain.tld/webmail]'' automatisch auf ''[https://domain.tld/webmail 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.2/mod/mod_rewrite.html Dokumentation bei apache.org über mod_rewrite] {en} * [http://httpd.apache.org/docs/2.2/misc/rewriteguide.html Apache Rewriting Guide mit vielen typischen Beispielen] {en} * [http://www.modrewrite.de/ Infos, Anleitungen Tutorials und Hilfe zum Apache Modul mod_rewrite] {de} * [http://de.selfhtml.org/servercgi/server/rewrite.htm SELFHTML: Umleitungen mit mod_rewrite] {de} # tag: Internet, Netzwerk, Server, Apache