Wunderlampe Rewrite-Engine

Philipp Zeder
Kategorie:in
Entwicklung & Performance
Veröffentlicht am 07. Sep. 2011
Mächtig ist sie, die Rewrite-Engine des Apache Webservers. Und dementsprechend auch nicht so einfach zu verstehen.

Bild: sxc.hu
Damit Sie sich nicht mit dem Lernen von Rewrite-Befehlen herumschlagen müssen, stellen wir Ihnen heute die drei Anweisungen vor, die unsere Supporter am häufigsten anwenden.
Die Anweisungen werden jeweils in einer Textdatei hinterlegt, die den Namen .htaccess trägt und sich im Verzeichnis public_html befindet.
Website aus einem Unterordner aufrufen
Damit die gewünschte Website aus einem Unterordner aufgerufen wird, tragen Sie folgende Anweisung in die Datei .htaccess ein:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ihredomain.ch$ [OR]
RewriteCond %{HTTP_HOST} ^www.ihredomain.ch$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /unterordner/$1 [PT,L,QSA]
Und damit die Weiterleitung nicht in einer ewigen Schlaufe endet, fügen Sie folgende Anweisung in die .htaccess Datei im entsprechenden Unterordner ein:
RewriteEngine off
Domain A auf Domain B zeigen lassen
Falls Sie den Inhalt von Domain B anzeigen lassen möchten, ohne dass sich die URL in der Adresszeile ändert, verwenden Sie folgende Anweisung in Ihrer .htaccess-Datei:
RewriteEngine On
RewriteRule ^(.*)$ https://www.ihredomain.ch/$1 [P,L]
Anfragen ohne www. umleiten
Ihre Website ist in der Regel sowohl mit www. als auch ohne diesen Zusatz erreichbar. Damit Suchmaschinen erkennen, dass es sich bei beiden Varianten um den gleichen Inhalt handelt, können Sie Anfragen an Ihre Domain mit folgendem Befehl in der Datei .htaccess umleiten:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ihredomain\.ch$ [NC]
RewriteRule ^(.*)$ https://www.ihredomain.ch/$1 [R=301,QSA,L]
Haben Sie Fragen zu diesen Anweisungen? Oder eine eigene Regel, die Sie immer wieder verwenden? Dann hinterlassen Sie uns doch einen Kommentar. Wir freuen uns.
Beteilige dich an der Diskussion
4 Kommentare

Hi Marco
Bitte versuche es mal mit folgender Anweisung:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)meine-deine-seine-domain.com
RewriteRule ^mydir/(.*)$ http://subdom.meine-deine-seine-domain.com/$1 [L,R=301]
Danke für den nützlichen Beitrag.
Eine Frage habe ich noch. Wiso wird beim umleiten eines Directories (1. Beispiel) nicht die gleiche Ergänzung wie im 3. Beispiel benutzt? ([PT,L,QSA] vs. [R=301,QSA,L])
Ist es gerade für die Suchmaschinenoptimierung nicht besser ein R=301 (pemanent redirect) zu haben?
Gruss
Dominik

Im ersten Beispiel ist für den Besucher bzw. die Suchmaschine nicht ersichtlich, dass der Inhalt eigentlich aus einem Unterordner aufgerufen wird. Entsprechend ist auch keine 301 Weiterleitung nötig, da sich der Inhalt ja von aussen gesehen bereits am richtigen bzw. bekannten Ort befindet.
Besten Dank für die Infos. Leider kriege ich folgendes nicht hin: Wenn ein Aufruf über die Haupt-Domain in einen Unterordner der Subdomain erfolgt, so soll er auf die Subdomain weitergeleitet werden:
domain.tld/subdomain/... => subdomain.domain.tld/...
Dafür habe ich folgende Regeln eingebaut (soll auch auf meinem Computer funktionieren, deshalb localhost-Regel):
RewriteCond %{HTTP_HOST} !localhost
RewriteCond %{REQUEST_URI} ^/subdomain/
RewriteRule ^subdomain(.*)$ https://subdomain.domain.tld$1 [R=301,L]
Habt Ihr eine Idee? Vielen Dank!