Inhaltsverzeichnis
Erklärungen #
Folgend ein Paar Erklärungen für Sachen die man in den Rewriteregeln sieht:
- Für jeden Ordner in dem geleitet wird, sollte eine RewriteCond stehen, welches sagt das es diesen Ordner nicht weiterleiten soll
- Ansonsten bekommt man den Fehler „To many redirects“
- Bsp. RewriteCond %{REQUEST_URI} !^/data
- RewriteRule ^(.*)$ data/$1 [L]
- Weitere Beispiele findet man weiter unten: Rewrite Beispiele
- (www\.|) => Kann www enthalten, muss es aber nicht
- (.*) => Alle Zeichen, beliebig oft, kann auch kein Zeichen enthalten
- (.+) => Alle Zeichen, beliebig oft, muss ein Zeichen enthalten
- (.+\.js) => Muss mit .js enden, beliebig viele Zeichen davor, muss ein Zeichen davor enthalten (nur .js geht nicht, main.js geht)
- ^$ => Diese Zeichen bedeuten, das es damit beginnen muss und damit enden muss
- !^ => Darf nicht damit anfangen
- | => Das Zeichen steht für ein Oder
- Falls der Tag
<IfModule mod_rewrite.c>
noch nicht eingebunden ist, muss dies getan werden - Fall in diesem Tag nicht die Zeile
RewriteEngine On
steht, muss diese dort Ergänzt werden (Ansonsten gehen die Rewrites nicht!)
Rewrites testen #
Eine Webseite auf der man die htaccess und somit auch die Rewrites testen kann ist folgende: Htaccess Tester
Rewrite Beispiele #
Alles in den Unterordner /data/ leiten #
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.|)cdn\.tripstools\.de$
RewriteCond %{REQUEST_URI} !^/data
RewriteRule ^(.*)$ data/$1 [L]
</IfModule>
Alle JS Dateien in den Unterordner /data/js/ leiten #
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.|)cdn\.tripstools\.de$
RewriteCond %{REQUEST_URI} !^data/js
RewriteCond %{REQUEST_URI} !^data
RewriteCond %{REQUEST_URI} !^js
RewriteRule ^(.+\.js)$ data/js/$1 [L]
</IfModule>
Alle Bilder in den Unterordner /data/bilder/ leiten #
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.|)cdn\.tripstools\.de$
RewriteCond %{REQUEST_URI} !^data/js
RewriteCond %{REQUEST_URI} !^data
RewriteCond %{REQUEST_URI} !^js
RewriteRule ^(.+\.svg|.+\.png|.+\.PNG|.+\.jpg|.+\.JPG)$ data/bilder/$1 [L]
</IfModule>
Alle Bilder von einer bestimmten Domain umleiten #
RewriteCond %{HTTP_HOST} pogowiki.dvl
RewriteRule ^pokemon-liste\/(.+\.(gif|jpg|png|css))$ https://www.gowiki.tripstools.de/pokemon-liste/$1 [QSA,L]
Alle anfragen auf HTTPS umleiten #
RewriteCond %{HTTP_HOST} ^gowiki.tripstools.de [NC,OR]
RewriteCond %{HTTP_HOST} ^www.gowiki.tripstools.de [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Apache Rewrite Generator #
Um einen Rewrite Block zu generieren kann folgender generator benutzt werden: Rewrite-Generator
Dieser Generator kann folgendes: #
- Rewrite für eine bestimmte Domain
- Alles in einem Ordner leiten
- Alle Dateien eines oder mehren Typen in einem Ordner leiten
- Diese Ordner exluden damit man nicht den Fehler „To many redirects“ bekommt
Beispiel: #
Anfrage: für Domain = cdn.tripstools.de Rule = .woff,.woff2 In Ordner = data/fonts
Ergebnis:
RewriteCond %{HTTP_HOST} ^(www\.|)cdn\.tripstools\.de$
RewriteCond %{REQUEST_URI} !^/data/fonts
RewriteCond %{REQUEST_URI} !^/data
RewriteCond %{REQUEST_URI} !^/fonts
RewriteRule ^(.+\.woff|.+\.woff2)$ data/fonts/$1 [L]