Apache/mod rewrite

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Ausbaufähige Anleitung

Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.


Anmerkung: Es könnten noch ein oder zwei Beispiele ergänzt werden, z.B. wie man alle Anfragen auf https umleitet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Einen Editor öffnen

Inhaltsverzeichnis
  1. mod_rewrite
  2. Modul nutzen
  3. Beispiele
  4. Links

"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

sudo a2enmod rewrite 
sudo a2enmod actions 

Schließlich muss die Konfiguration von Apache wieder neu eingelesen werden

sudo apache2ctl force-reload 

Modul nutzen

Üblicherweise wird die Rewrite-Bedingungen direkt über .htaccess-Dateien in den entsprechenden Verzeichnissen des Webservers festgelegt.

1
2
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

1
2
3
<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 in der Dokumentation nachgelesen werden (siehe Links am Ende des Artikels).

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 {en}.

In der Datei /etc/apache2/sites-available/default müssen dafür z.B. die Zeilen:

1
2
3
4
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

1
2
RewriteEngine   on
RewriteCond %{REMOTE_ADDR} ^123.456.789. [OR] 

könnte man z.B. einen kompletten IP-Bereich wie 123.456.789.* komplett aussperren.