blog.bartlweb - a technologist's external brain

Thema: Apache

Shorturls mit mod_rewrite erstellen

Die folgende RewriteRule für das Apache-Modul mod_rewrite wird in die htaccess-Datei integriert und bewirkt eine Weiterleitung bei Eingabe der Kurzurl auf die angegebene Seite. Dabei ignoriert die Regel unterschiedliche Groß- und Kleinschreibung und ein nachgestelltes Slash.

RewriteRule ^short?/$ /your/target/page.html [NC,R=301,L]

D.h. die oben angegebene Weiterleitung wird z.B. bei folgenden Schreibweisen durchgeführt:

http://www.example.com/short
http://www.example.com/Short
http://www.example.com/SHORT
http://www.example.com/short/
http://www.example.com/sHoRt/

Nicht aber bei Eingabe von:

http://www.example.com/short/test.de
http://www.example.com/sub/short

https in Apache Webserver aktivieren

Wer SSL-geschützte HTTPS-Verbindungen auf seinen Apache Webserver zulassen möchte benötigt ein SSL-Zertifikat. Dieses gibt es entweder von einer Zertifizierungsstelle oder für Testumgebungen bzw. private Anwendungen reicht auch ein selbstsigniertes Zertifikat. OpenSSL bzw. das Apache Modul mod_ssl sind Voraussetzung für den Betrieb.

SSL-Zertifikat generieren

Für private Server oder Testumgebungen reicht ein selbstsigniertes Zertifikat meist aus. In Live-Umgebungen rate ich dringend Zertifikate von anerkannten Zertifizierungsstellen zu nutzen.

Private-Key

Der erste Schritt für die Erstellung eines Zertifikats ist die Erstellung eines privaten Schlüssels. Diesen sollten Sie zum jetzigen Stand der Technik mit einer Länge von mindestens 2048bit erstellen.

mit htaccess alte Websites auf neue umleiten

Gerade beim Relaunch von Websites lässt sich eine Änderung in der Seiten- und Pfadstruktur nicht immer vermeiden. Damit alte Links aber weiterhin funktioniern kann man alte Seiten mittels Apache htaccess auf neue umleiten.

Einzelseiten umleiten

Redirect 301 /folder/file.html http://www.newsite.com/folder/file.html
Redirect 301 /folder/file.html /newfolder/file.html

Ordner umleiten

RewriteEngine On
RewriteRule ^folder/(.*) http://www.example.com/newfolder/$1 [R=301,L]
RewriteRule ^folder/subfolder/(.*) /folder/$1 [R=301,L]

alle Seiten einer Website umleiten

RewriteEngine On
RewriteRule .* maintenance.html [L]

alle Seiten auf die Hauptseite umleiten

Wollen Sie eine Seite offline nehmen und daher für alle Aufrufe eine einzige Seite anzeigen, dann hilft folgendes Snippet. Sie müssen die Liste der Dateiendungen entsprechend Ihren Bedürfnissen anpassen um Datei-Requests bei Bedarf ebenfalls auf die Landingpage umzuleiten. Nennen Sie Ihre Landingpage index.html oder passen Sie den Dateinamen unten an.

TYPO3-Website in den Wartungsmodus versetzen

Gerade bei TYPO3-Updates kann es zu kurzen Ausfällen der Frontend-Ausgabe kommen. Damit Nutzer diese Ausfälle nicht sehen lässt sich mittels .htaccess für dieses Zeit eine Vorschaltseite anzeigen. Das folgende Snippet hat dabei den Vorteil, dass das TYPO3-Backend dennoch erreichbar bleibt.

RewriteEngine On
RewriteRule ^(typo3/|t3lib/|tslib/|typo3conf/|typo3temp/|_asmaintenance/) - [L]
RewriteRule ^typo3$ typo3/index_re.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule index.php maintenance.html [L]
RewriteRule .* maintenance.html [L]

Webdav-Probleme im Zusammenspiel mit Symbian S60

Um den in Symbian^3 integrierten Webdav-Client mit einem Apache-Webserver zusammenarbeiten zu lassen, sind die folgenden Punkte zu beachten:

  • In Benutzernamen und Passwort werden nicht alle Sonderzeichen akzeptiert. - Probieren sie daher einmal ein einfacheres Passwort.
  • Ordner mit dem Namen private werden nicht angezeigt.
  • Der Symbian-Webdav-Client benötigt am Server ein redirect-carefully.

redirect-carefully

Nicht nur der Symbian Webdav-Client sondern auch der in Windows integrierte Webdav-Client benötigen etwas Zuspruch vom Server. Typische Symptome sind das nicht anzeigen der Ordnerstruktur oder nur die Anzeige des 1. Levels. Abhilfe schaffen die folgenden Apache Direktiven:

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
BrowserMatch "^Microsoft-WebDAV-MiniRedir/" redirect-carefully
#BrowserMatch "^S60 Remote Storage WebDav client" redirect-carefully

Redirect via Apache VirtualHost

Die folgende VirtualHost-Konfiguration für Apache ermöglicht den einfachen Redirect von einer Domain auf eine andere.

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://www.target.com/
</VirtualHost>

Setzt man die Direktive ServerAlias auf bestimmte Subdomains oder auf *.domain.com, können diese bzw. alle Subdomains in einem Schritt auf die entsprechende Domain umgeleitet werden.

Hotlinking für Website-Ressourcen unterbinden

Hin und wieder ist es gewünscht oder gefordert, dass auf der eigenen Webseite eingebundene Dateien oder Ressourcen, nicht von externen Personen weiterverlinkt werden können (bzw. von Suchmaschinen erfasst werden dürfen). Der Vorgang des Verlinkens von Ressourcen einer Webseite auf anderen Webseiten wird Hotlinking genannt.

Um Hotlinking zu unterbinden können Sie per Apache mod_rewrite den Zugriff auf die entsprechenden Dateien nur dann erlauben wenn der Http-Referer eine Seite aus Ihrer eigenen Domain ist. Erstellen Sie dazu im Root-Verzeichnis oder im Ordner mit den Ressourcen eine .htaccess-Datei mit dem für Sie angepassten Beispiel.

alle Dateien vom Hotlinking ausnehmen

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://blog\.bartlweb\.net/.*$ [NC]
RewriteRule .* - [F,NC,L

Schrift-Dateien vom Hotlinking ausnehmen

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?bartlweb\.net/.*$ [NC]
RewriteRule \.(ttf|otf|woff|eot)$ - [F,NC,L]

Einzelne Dateien per .htaccess schützen

Apache bitte nicht nur die Möglichkeit ganze Verzeichnisse per .htaccess mit einem Passwort zu schützen. Es ist auch möglich einzelne Dateien oder Dateiarten zu schützen.

Einzelne Datei

<FilesMatch "bar.html">
  AuthType Basic
  AuthName "Authentication required"
  AuthUserFile /www/password.htpasswd
  require valid-user
</FilesMatch>

Regular Expression

Es ist jedoch auch möglich einen regulären Ausdruck zu verwenden. Dadurch können z.B. nur Datein mit einer bestimmten Endung geschützt werden.

<FilesMatch "\.(gif|jpe?g|png)$">
   ...
</FilesMatch>

Alias nur für einen virtuellen Host definieren

Prinzipiell ist es in Apache möglich Alias nur für einen virtuellen Host zu definieren. Dazu muss die Definition lediglich innerhalb des virtuellen Hosts definiert werden. Alle Alias-Definition außerhalb einer virtuellen Host-Definition sind global und damit in allen virtuellen Hosts gültig.

Apache als Proxy für Webseiten verwenden

Apache lässt sich nicht nur als Webserver sondern auch als Proxy verwenden. In Zusammenhang mit VirtualHosts kann das Proxy Modul dazu verwendet werden, mehrer interne Server über einen Port von Außen erreichbar zu machen.

Angenommen unser Webserver ist unter www.example.com Port 80 erreichbar und unser Testserver intern läuft auf einer zweiten Maschine so müsste dieser nach Außen hin einen anderen Port, z.B. 81, bekommen um erreichbar zu sein.

Die Lösung dafür bietet das Apache Proxy-Modul. Dieses kann anfragen an den eigenen Webserver mittels Proxy an einen anderen weiterleiten.