[htaccess] Alle Subdomains auf www umleiten

Zoker

Lt. Junior Grade
Registriert
Okt. 2013
Beiträge
344
Hallo zusammen,

Ich habe eine Seite seite.com und möchte diese auf www.seite.com weiterleiten.

Aber außerdem möchte ich noch alle sub.seite.com auf www.sub.seite.com weiterleiten und sub1.seite.com auf www.sub1.seite.com.

Da alle *.seite.com auf das Verzeichnis von www.seite.com zeigen, sollte das mit der htacces kein Problem sein.

Kann mir jemand sagen, wie die htaccess Datei aussehen muss, damit die so funktioniert?

Vielen Dank
Zoker
 
Die musst in den apache configs das ganze einstellen.
Hat eigentlich nichts mit der htacces zu tun.

Schau dir mal die httpd.conf an.

MfG
 
du brauchst mod rewrite.

Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www$ [NC]
RewriteRule ^/(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

Kann es gerade nicht testen, aber müsste so passen
 
ACHTUNG: Fehler in erster Regel:
RewriteCond %{HTTP_HOST} !^www$ [NC]
->
RewriteCond %{HTTP_HOST} !^www [NC]





RewriteCond %{HTTP_HOST} ^www.site.com [NC]
RewriteRule ^.* http://www.seite.com [R=301,L]


Kann sein dass du dann in der vorherigen RewriteRule das L am Ende entfernen musst. Das steht für "Last Rule". Bin mir da aber nicht sicher, da es dann eigentlich ein zweiter Aufruf der Rewrite Rules ein müsste (Aufruf eins: site.com/* -> www.site.com/*, Aufruf zwei: www.site.com/* -> www.site.com).

Man kann dann die Performanz noch etwas erhöhen wenn man dafür sorgt dass es nur einen Redirect gibt:

Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{HTTP_HOST} !site.com$ [NC]
RewriteRule ^/(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.site.com [NC]
RewriteRule  ^.* http://www.seite.com/ [R=301,L]
 
Zuletzt bearbeitet:
Ähm hast du mehr geschrieben als nur edit? o.O
 
ja. hab erst was falsches geschrieben :)
 
Super danke :)

Gibt nur noch ein Problem:
Bei dem zweiten endet das ganze in einer endlosschleife und redirected immer wieder auf sich selbst :/

Die beiden Rules werden übrigens auf zwei verschiedenen Seiten verwendet :)

Wo hast du das eigentlich gelernt?

Konnte da noch kein hilfreiches Tutorial zu finden :/
 
Ich habe mich da mal vor Jahren eingelesen. habe auch eine root server und habe da viel gebastelt. Aber wenn man das eine Zeit nicht mehr macht ist alles leider ganz schnell weg :)

Wie sehen denn jetzt genau deine beiden htaccess Dateien aus?
 
Code:
RewriteCond %{HTTP_HOST} ^www.crossfire.crystalblood.de [NC]
RewriteRule ^.* http://www.crossfire.crystalblood.de [R=301,L]

Da fehlt ein "!":
Code:
RewriteCond %{HTTP_HOST} !^www.crossfire.crystalblood.de [NC]
RewriteRule ^.* http://www.crossfire.crystalblood.de [R=301,L]

Deine Regel lautet übersetzt:
"Wenn Host www.crossfire.crystalblood.de ist, dann leite um auf www.crossfire.crystalblood.de"
Sollte natürlich lauten
"Wenn Host NICHT www.crossfire.crystalblood.de ist, dann leite um auf www.crossfire.crystalblood.de"
 
download.crystalblood.de leitet mich um. Evtl isses bei dir gecached und er Browser macht gar keinen neuen Aufruf? STRG-SHIFT-R?

http://www.crossfire.crystalblood.de/dasdkas/ wird nicht umgeleitet. Fängt ja mit www.crossfire.crystalblood.de an...
Wenn es auf die Hauptseite umbiegen soll brauchst du noch eine Regel:

Code:
RewriteCond %{HTTP_HOST} ^www.crossfire.crystalblood.de [NC]
RewriteRule ^/.+ http://www.crossfire.crystalblood.de [R=301,L]

Das "^/.+" sorgt dafür dass nur umgeleitet wird wenn tatsächlich was angefordert wird.
 
Zoker schrieb:
Also jetzt wird alles www.crossfire.crystalblood.de/* auf www.crossfire.crystalblood.de umgeleitet?

Hab jetzt den kompletten Cache geleert und es auch noch mit einem unbenutzen Firefox probiert und bei download.crystalblood.de, minecraft.crystalblood.de und crossfire.crystalblood.de lande ich jedesmal auf der www.crystalblood.de

Und wenn ich www.crossfire.crystalblood.de/bla eingebe, kommt immer noch ein 404 Fehler :/

Ich weiß echt nicht, was da schief läuft :P

Ich grad auch nicht :)

Wenn ich minecraft.crystalblood.de aufrufe werde ich per 302 an www.crystalblood.de umgeleitet.
Es ist also NICHT die RewriteRule in der .htaccess da die mit einem 301 weiterleiten müsste...

Bei www.crossfire.crystalblood.de/bla wird gar nicht umgeleitet.

Hast du Kontrolle über die apache virtualhost Konfiguration? Ist dort "AllowOverride All" im entsprechendem <directory> eingetragen und keine vorherigen RewriteRules, die evtl. schon was umschreiben?
 
Leider habe ich keine Kontrolle über die Config :/
 
Verdammt. Ich hasse solche Fehler.

Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^/(.*)$ -> RewriteRule ^(.*)$


und natürlich entsprechend:
Code:
RewriteCond %{HTTP_HOST} ^www.crossfire.crystalblood.de [NC]
RewriteRule ^.+ http://www.crossfire.crystalblood.de [R=301,L]
RewriteRule ^/.+ -> RewriteRule ^.+


Tut mir leid, hab ich verschusselt.
Ist eine besonderheit eines pre-Directory Rewrites (.htaccess) :
The removed prefix always ends with a slash, meaning the matching occurs against a string which never has a leading slash. Therefore, a Pattern with ^/ never matches in per-directory context
von http://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteRule

Ich hoffe das wars jetzt :)
Ergänzung ()

Evtl. musst du noch ein
Code:
Options +FollowSymlinks
einbauen. Aber eigentlich sollte ein "permission denied" Fehler kommen wenn das fehlt...
 
Also das www.crossfire.crystalblood.de/* funktioniert einwandfrei :daumen:

crossfire.crystalblood.de und download.crystalblood.de werden auch weitergeleitet, nur minecraft.crystalblood.de will bei mir noch nicht, aber das liegt wahrscheinlich am Cache :)

Funktioniert das bei dir auch alles?

Und vielen vielen Dank nochmal :D
 
nein:

Code:
$ wget -O /dev/null minecraft.crystalblood.de
--2014-03-28 15:26:33--  http://minecraft.crystalblood.de/
Auflösen des Hostnamen »minecraft.crystalblood.de (minecraft.crystalblood.de)«... 46.38.252.14
Verbindungsaufbau zu minecraft.crystalblood.de (minecraft.crystalblood.de)|46.38.252.14|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 302 Found
Platz: http://www.crystalblood.de/ [folge]
--2014-03-28 15:26:33--  http://www.crystalblood.de/
Auflösen des Hostnamen »www.crystalblood.de (www.crystalblood.de)«... 46.38.252.14
Verbindungsaufbau zu www.crystalblood.de (www.crystalblood.de)|46.38.252.14|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 2411 (2,4K) [text/html]
In »»/dev/null«« speichern.

werden alle nach www.crystalblood.de weitergleitet, nicht nach www.minecraft.crystalblood.de.
Und auch per 302 und nicht per 301.
Da ist also noch irgendwo eine andere Regel am Werk. Wenn es im PHP Code per header gemacht wird, würde der .htaccess code vorher stattfinden.

Zeig doch bitte nochmal die .htaccess von minecraft.crystalblood.de
 
Also minecraft.crystalblood.de hat keine eigene htaccess, da diese Domain per *.crystalblood.de auf das verzeichnis von www.crystalblood.de zeigt.

Es gibt nur eine durch Wordpress erstellte htaccess für www.minecraft.crystalblood.de

Die von www.crystalblood.de sieht jetzt so aus:
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Die von www.crossfire.crystalblood.de sieht so aus
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.crossfire.crystalblood.de [NC]
RewriteRule ^.* http://www.crossfire.crystalblood.de [R=301,L]

RewriteCond %{HTTP_HOST} ^www.crossfire.crystalblood.de [NC]
RewriteRule ^.+ http://www.crossfire.crystalblood.de [R=301,L]
 
Zurück
Oben