htaccess: Alle möglichen Domains weiterleiten auf eine Domain, inkl Pfad, etc.

Pulliuser

100% Baumwolle
Registriert
4 Nov. 2014
Beiträge
71
Hi,

ich komm im Moment nicht mehr weiter.

Meine Webseite ist über verschiedene Domains erreichbar, ich möchte das sie nur noch über angezeigt wird.

Im Netz findet man viele Beispiele, aber irgendwie finde ich nicht das Richtige. Und die Apache Doku erschlägt mich einfach nur. :unknown:

Am einfachsten scheint mir folgendes zu sein. Egal wie der Server erreicht wird, wenn es nicht die gewünschte URL ist mach den redirect auf diese.

[KW]RewriteCond %{HTTP_HOST} !name\.de$
RewriteRule ^ https://www.name.de%{REQUEST_URI} [R=301,L][/KW]

Das funktioniert wunderbar auf der Startseite, allerdings nicht in Unterordnern.
Also aus alternative.de/bla wird nicht name.de/bla

Es ist eine Wordpress Seite die in einem Unterordner liegt aber über den root aufrufbar sein soll/ist. Die komplette .htaccess im root sieht im Moment so aus:

[KW]# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# redirects
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !name\.de$
RewriteRule ^ https://www.name.de%{REQUEST_URI} [R=301,L]
</IfModule>

# GZIP
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript text/javascript application/json[/KW]

Jemand eine Idee wie ich das mit dem kompletten Pfad hinbekomme? Also inkl. Unterordner, Query Parameter, Hash?
 
Schieb mal deine Regeln vor den Wordpress-Block, und setz noch ein [kw]RewriteEngine On[/kw] davor. Das [kw][L][/kw] in den Wordpress-Regeln könnte sonst dafür sorgen, dass deine Regeln gar nicht mehr beachtet werden.

Evtl. musst du deine erste Zeile auch noch zu [kw]RewriteCond %{HTTP_HOST} !www\.name\.de$[/kw] ändern (sonst wird [kw]https://name.de[/kw] eben auch akzeptiert).
 
  • Thread Starter Thread Starter
  • #4
@Rakorium-M: Danke, werde ich testen

Frage: was genau ist der Grund für Dein Vorhaben? SEO oder was anderes?

In erster Linie will ich einfach das immer nur eine Domain in der Adresszeile zu sehen ist. Einfach weil das der richtige Name ist. Ich will nicht das sich falsche Schreibweisen verbreiten oder verlinkt werden. Auch www gehört dazu weil wir es sonst überall auch so kommunizieren.

Bzgl SEO setzt WP die canonical URL eigentlich schon richtig, trotzdem fühlt es sich auch für SEO sicherer an wenn alle Domains immer weitergeleitet werden.
 
Code:
Expand Collapse Copy
RewriteEngine On
RewriteCond %{HTTP_HOST} !name\.de$
RewriteRule ^/?(.*) https://www.name.de/$1 [R=301,L]
 
  • Thread Starter Thread Starter
  • #7
Schieb mal deine Regeln vor den Wordpress-Block, und setz noch ein [kw]RewriteEngine On[/kw] davor. Das [kw][L][/kw] in den Wordpress-Regeln könnte sonst dafür sorgen, dass deine Regeln gar nicht mehr beachtet werden.

Evtl. musst du deine erste Zeile auch noch zu [kw]RewriteCond %{HTTP_HOST} !www\.name\.de$[/kw] ändern (sonst wird [kw]https://name.de[/kw] eben auch akzeptiert).

Hat funktioniert, danke!

Verstehe zwar nicht wieso dann die WordPress Regeln noch gehen, denn in den obigen Regeln ist ja auch ein L am Ende. Allerdings weiß ich auch nicht genau was die WordPress Regeln eigentlich machen. Dachte immer das wird benötigt weil WP in einem Unterordner liegt aber über die root URL aufrufbar sein soll. Und das tut auch noch.
 
Zuletzt bearbeitet:
Du machst einen Redirect im Browser ([kw]R=301[/kw]). Der Browser ruft danach [kw]www.name.de[/kw] auf, was bei dir als neue Anfrage landet, und die Regeln wieder von vorne durchläuft. Wordpress macht dagegen interne Weiterleitungen - der Webserver sucht den geforderten Inhalt an einer anderen Stelle, aber der Browser bekommt davon nichts mit. Deshalb gibt's keine neue HTTP-Anfrage, und [kw]L[/kw] verhindert, dass weitere Regeln ausgeführt werden.
 
Zurück
Oben