Htaccess Rewriting

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

https://tools.tripstools.de/rewrite-generator/?domain=cdn.tripstools.de&rule=%28.%2B%5C.woff%7C.%2B%5C.woff2%29&dest=data%2Ffonts

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]

Loading

Angetrieben von BetterDocs