## page was renamed from Apache/Rewrite [[Getestet(edgy,dapper)]] {{{#!Wissen * [1]: [:Terminal: Ein Terminal öffnen] * [2]: [:Editor: Einen Editor öffnen] }}} [[TableOfContents(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 {{{#!Befehl sudo a2enmod rewrite }}} Das Verzeichnis für die Prozess-ID fehlt eventuell, man muss es daher mit {{{#!Befehl sudo mkdir -p /var/run/apache2 sudo chown -R www-data /var/run/apache2 }}} anlegen. Schliesslich muss die Konfiguration von Apache wieder neu eingelesen werden {{{#!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. {{{#!Text RewriteEngine on RewriteCond ... }}} Um das Modul in .htaccess Dateien zu aktivieren, muss meist noch die Datei '''/etc/apache2/sites-enabled/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 {{{ 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] 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 [http://www.squirrelmail.org/ Squirrelmail] {en} oder [http://www.roundcube.net/ RoundCube Webmail] {en} . In der Datei '''/etc/apache2/sites-available/default''' müssen dafür z.B. die Zeilen {{{#!Text RewriteEngine on RewriteCond %{SERVER_PORT} ^80$ 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 {{{#!Text 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.0/mod/mod_rewrite.html Dokumentation bei apache.org über mod_rewrite] {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} ---- * ["Kategorie/Internet"] * ["Kategorie/Netzwerk"] * ["Kategorie/Server"] ## vim:filetype=moin