„Eine Rewrite-Engine ermöglicht es, an den Webserver gerichtete Anfragen intern umzuschreiben oder extern weiterzuleiten.“ – Wiki
1.) Seiten ohne subdomain (http://domain.de)
2.) Seiten mit www (http://www.domain.de)
3.) Schrägstrich hinzufügen
4.) Eine einfache Weiterleitungen
5.) alle Anfragen auf ein Unterverzeichnis auf die Hauptseite weiterleiten
6.) Bilder von Ihrer domain schützen
7.) SSL-Verbindung an einen SSL-Proxy weiterleiten
8.) Verbindungen auf Port umbiegen
9.) Sub-Domain umleiten
10.) Client aussperren
11.) Umleiten der Anfrage
12.) Neue Index-Datei
13.) Webseiten Zugriff schützen
14.) ErrorSeite umleiten
15.) Slash am Ende einer Datei entfernen
16.) doppelten Slash in der URL entfernen
17.) Dateien sperren
18.) .htaccess umbenennen
19.) Verzeichnisauflistung an/aus
20.) Fehlermeldungen (parse-errors) ausgeben
Vorbereitung:
Unsern Apache2 Webserver müssen wir beibringen, dass er eine URL neu-schreiben kann.
a2enmod rewrite
Und in der ersten Zeile unserer „.htaccess“-Datei muss folgendes stehen, wenn wir die „rewrite“-Funktion nutzen wollen.
RewriteEngine On
1.) Seiten ohne subdomian (http://domain.de)
wenn irgendeine Subdomain in der url mit angegeben wird, wird trotzdem die domain ohne subdomain angezeigt
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^([^.]+).domain.de$ [NC]
RewriteRule ^(.*)$ http://domain.de/$1 [R=301,L]
1.2) mann kann auch bestimmte subdomains von dieser Regel ausschließen
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^([^.]+).domain.de$ [NC] [OR]
RewriteCond %{HTTP_HOST} !^subdomain.domain.de$ [NC]
RewriteRule ^(.*)$ http://domain.de/$1 [R=301,L]
1.3) Seiten ohne www (http://domain.de)
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^www.domain.de$ [NC]
RewriteRule ^(.*)$ http://domain.de/$1 [R=301,L]
2.) Seiten mit www (http://www.domain.de)
wenn irgendwas außer www vor der Domain angegeben ist, wird www eingefügt
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} !^www.domain.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301,L]
2.1) mann kann auch bestimmte subdomains von dieser Regel ausschließen
RewriteCond %{HTTP_HOST} !^www.domain.de$ [NC] [OR]
RewriteCond %{HTTP_HOST} !^subdomain.domain.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301,L]
3.) Schrägstrich hinzufügen
um z.B. einen Schrägstrich hinter die angegebene URL setzen möchte, kann man dies wie folgt machen
RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
4.) Eine einfache Weiterleitungen
alle Anfragen auf forum.html werden auf
forum/forum.php weitergeleitet, in der URL steht nun noch immer forum.html
RewriteRule forum.html forum/forum.php
4.1) alle Unterverzeichnisse auch umleiten, in der URL steht nun der neue Pfad
RewriteRule forum/(.*)$ forum_neu/forum.php [R=301,L]
4.2) die Unterverzeichnisse mit übertragen, somit kommen wir z.B. von forum/Unterverzeichnis nach forum_neu/Unterverzeichnis
RewriteRule forum/(.*)$ forum_neu/$1 [R=301,L]
4.3) URL neu-schreiben (rewriting)
Der nachfolgende Code bewirkt, dass
„http://www.domain.de/index.php?go=home“
wie folgt umbenannt wird
„http://www.domain.de/home.html“
RewriteRule ^(.*).html$ index.php?go=$1 [L]
5.) alle Anfragen auf ein Unterverzeichnis auf die Hauptseite weiterleiten
RewriteRule forum/?$ / [R=301,L]
6.) Bilder von Ihrer domain schützen
Bilder von Ihrer domain schützen, indem diese nicht von anderen domians (Referer) geladen werden dürfen, sobald dies geschieht, wird im folgendem Beispiel, anstatt des Bildes ein RSS-Feed Bild angezeigt, wobei google von dieser Regel ausgenommen ist…
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.de(/.*)?$ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.(de|com)(/.*)?$ [NC]
RewriteRule .(BMP|JPG|JPEG|GIF|PNG)$ http://feeds2.feedburner.com/voku-online.4.gif [L]
domain.de muss du noch durch deine eigene Domain ersetzen und „RewriteEngine On“ am Anfang deiner .htaccess-Datei einfügen
weitere Dateiendungen welche Sie blocken könnten
BMP|JPG|JPEG|GIF|PNG|SWF|WMV|MPG|MPEG|AVI|DIVX|MP3|WMA|MOV|RM
|FLV|bmp|jpg|jpeg|gif|png|swf|wmv|mpg|mpeg|avi|divx|mp3|wma|mov|rm|flv
auf folgender Webseite, kannst du testen, ob deine Bilder nun geschützt sind…
coldlink.com
7.) SSL-Verbindung an einen SSL-Proxy weiterleiten
RewriteCond %{SERVER_PORT} ^443$
RewriteRule (.*) https://ssl-id1.de/%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
8.) Verbindungen auf Port umbiegen
8.1) Verbindungen auf Port 80 umbiegen
Verbindungen welche nicht auf Port 80 eintreffen (solange im Webserver mehrere offene Port konfiguriert sind – meistens Port 80 [http] 443 [https]) auf Port 80 weiterleiten
RewriteCond %{SERVER_PORT} !^80
RewriteRule ^(.*)$ http://www.domainname.de/$1 [R=301,L]
8.2) Verbindungen auf Port 443 umbiegen
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://www.domainname.de/$1 [R=301,L]
9.) Sub-Domain umleiten
um z.B. eine subdomains „linux.voku-online.de“ einfach nur umzuleiten, kann man folgendes eintragen, somit bleibt die Sub-Domain in der URL erhalten
RewriteCond %{HTTP_HOST} ^linux.voku-online.de [NC]
RewriteRule ^$ /news-c5.html [R=301,L]
bzw. wenn man dies auf die Hauptdomain weiterleiten möchte dann müsste folgendes eingetragen werden
RewriteCond %{HTTP_HOST} ^windows.voku-online.de [NC]
RewriteRule (.*) http://voku-online.de/news-c4.html [R=301,L]
10.) Client aussperren
Man kann auch ein bestimmtes Betriebssysteme oder Browser aussperren z.B.:
10.1) Internet-Explorer aussperren
RewriteCond %{HTTP_USER_AGENT} ^MSIE.*
RewriteRule ^/.* - [forbidden]
10.2) Windows-Computer aussperren
RewriteCond %{HTTP_USER_AGENT} ^Windows.*
RewriteRule ^/.* - [forbidden]
10.3) Webseiten aussperren
RewriteCond %{HTTP_REFERER} badsite.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherbadsite.com
RewriteRule .* - [forbidden]
11.) Umleiten der Anfrage
11.1) Weiterleitungen zur Startseite
Alternativ könnte man auch mit folgendem Befehl, eine bestimmte Anfrage zu einer neue Domain umleiten.
Redirect /altes_Verzeichnis/alte_Seite.html http://meine_domain.de/
11.2) Weiterleitungen (301 Redirect)
Dies nutzt man, wenn man z.B. eine Domain umgezogen hat, so dass die Suchmaschinen nicht weiter die alte Webseite in Ihren Index aufnehmen.
Redirect permanent /seite.html http://www.neue-domain.de/seite.html
12.) Neue Index-Datei
Standardmäßig wird eine index.php oder wenn diese nicht vorhanden ist eine index.html Datei als erstes angezeigt, wenn man sich mit einem Browser ein Verzeichnis auf einem Webserver aufruft. Mit dem folgendem Befehl kannst du bestimmen, welche Dateien als erstes angezeigt werden sollen.
DirectoryIndex filename.html index.cgi index.pl default.htm
13.) Webseiten Zugriff schützen
13.1) Zugriff komplett sperren
Mit folgendem Inhalt in einer „.htaccess“-Datei ist der Zugriff auf dieses Verzeichnis (und Unterverzeichnisse) komplett gesperrt
order allow,deny
deny from all
Folgendes verhindert, dass die hier spezifizierte Datei .htaccess aufgerufen werden kann. An Stelle von .htaccess kann jede beliebige Seite/Datei/Dateityp einsetzen werden
order allow,deny
deny from all
oder man bannt ein bestimmte Domain
order allow,deny
deny from .domain.de
allow from all
13.2) Zugriff nur nach Authentifizierung
AuthUserFile /verzeichnise.../.htusers
AuthGroupFile /dev/null
AuthName "Authorization Required"
AuthType Basic
require valid-user
Der Pfad zu der „.htusers“-Datei muss komplett angegeben werden. z.B.:
AuthUserFile /var/www/web1/web/.htusers
um diese User-Datei anzulegen kann man folgendes Kommando verwenden
htpasswd -bc .htusers test_user geheimes_passwort
und um einen weiteren Benutzer hinzuzufügen
htpasswd -b .htusers tset_user_2 geheimes_passwort
13.3) Zugriff nur von einem bestimmten IP-Adressen-Bereich
order deny,allow
deny from all
allow from 192.168
Somit ist nur der Zugriff nur von folgenden IP-Adressen gestattet -> 192.168.X.X
! Wichtig ! – Du solltest deine Webseite nicht nur mit einem IP-Filter Schützen, da man mittels IP-Spoofing (gefälschten Header-Infos) dann unter Umständen doch noch darauf zugreifen kann.
13.4) Zugriff nicht von einem bestimmten IP-Adressen-Bereich
order allow,deny
allow from all
deny from 212.26.50.10
14.) ErrorSeite umleiten
Zudem könnten man auch die Fehlerseiten, welche dem Benutzer angezeigt werden, wenn dieser z.B. einen Pfad auf Ihren Webseren anspricht, welcher gar nicht existiert, erhält.
ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/serverr.html
15.) Slash am Ende einer Datei entfernen
Ich hatte heute das Problem, dass einer meiner Blog-Einträge falsch verlinkt wurde und so einige Leute nicht den korrekten Inhalt zu sehen bekamen, dies habe ich nun umgangen, indem der Slash am Ende der URL entfernt wird, wenn es sich nicht um ein Verzeichnis handelt und es sich um eine „.php“ oder „.html“ Datei handelt.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)(.php|.html)/$ /$1$2 [R=301,L]
16.) doppelten Slash in der URL entfernen
Wenn man doppelte Slashes in einer URL entfernen möchte …
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
17.) Dateien sperren
17.1) nur bestimmt Dateiendungen können heruntergeladen werden
ForceType application/octet-stream
oder man kann auch alle Dateien welche mit einen „.“ Punkt beginnen, verhindern von Webserver ausgeliefert zu werden
deny from all
18.) .htaccess umbenennen
Bei diesem Beispiel wird in allen Unterverzeichnissen die Datei .datei als htaccess-Datei angesehen
AccessFileName .datei
19.) Verzeichnisauflistung an/aus
Falls sich keine Index-Datei (Startdatei) in einem Verzeichnis befindet, kann man entweder einen Fehler zurückgeben oder den Inhalt anzeigen lassen
19.1) Inhalt ausgeben
Options +Indexes
19.2) Fehler ausgeben
Options -Indexes
20.) Fehlermeldungen (parse-errors) ausgeben
php_flag display_errors true