Ergebnis 1 bis 15 von 15

Thema: 301 Weiterleitung Multidomain Problem

  1. #1
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Frage 301 Weiterleitung Multidomain Problem

    Hi, bei mir zeigen 4 Domains auf das selbe Verzeichnis, Contao ist auf Multi-Domainbetrieb eingerichtet und funktioniert.
    Problem ist, dass jede Startseite bisher /de/startseite.html hieß (oder auch impressum, kontakt, anfrage usw.). Wenn ich nun per .htaccess

    Code:
    Redirect 301 /de/startseite.html https://www.neue-domain.de/
    einfüge, dann greift das für alle Domains, d.h. alle anderen Domains werden auf diese eine umgeleitet. Was ich brauche ist:

    Code:
    Redirect 301 https://www.alte-domain-1.de/de/startseite.html https://www.neue-domain-1.de/
    Code:
    Redirect 301 https://www.alte-domain-2.de/de/startseite.html https://www.neue-domain-2.de/
    Code:
    Redirect 301 https://www.alte-domain-3.de/de/startseite.html https://www.neue-domain-3.de/
    Nur geht das nicht. Was kann ich tun für die Weiterleitungen je Domain?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Dafür brauchst du die RewriteEngine mit RewriteCond und RewriteRule. Eine RewriteCond brauchst du aber nicht, wenn das sowieso bei jeder Domain passieren soll, dann reicht auch die Variable {HTTP_HOST}.

  3. #3
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard

    Ich habe das mal so versucht:
    Code:
    RewriteRule ^/https://www.alte-domain.de/de/startseite.html$ https://www.neue-domain.de/startseite.html [R=301,L]
    Aber das funktioniert nicht. Kannst du mir bitte ein Beispiel machen?
    Hatte diese Seite zur Hilfe genommen.

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Ohne RewriteCond wird es doch nicht funktionieren, hatte dein Problem falsch verstanden . Ein Beispiel mit RewriteCond + Domain befindet sich ja bereits in der .htaccess.default von Contao. Direkt davor oder danach solltest du deine Rules definieren.

  5. #5
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard

    leider nein, nur Beispiele um www hinzuzufügen oder zu entfernen, mod_deflate, und REQUEST_FILENAME. Aber nichts was ich für mich anwenden kann

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Zitat Zitat von x4all Beitrag anzeigen
    leider nein, nur Beispiele um www hinzuzufügen oder zu entfernen
    Ja genau das ist es. Da wird auch auf die Domain geprüft.
    https://github.com/contao/core/blob/...ault#L222-L223

    Das ist genau das was du brauchst. Eine RewriteCond, wo du auf eine bestimmte Domain prüfst und dann die RewriteRule, wo du bspw. /de/startseite.html auf https://%{HTTP_HOST} weiterleitest.

  7. #7
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard

    Ich finde alle mögliche Beispiele, aber nicht das was bei mir funktioniert. Egal wie ich es schreibe, es klappt nicht.

    Code:
    RewriteEngine on
    
    RewriteCond %{QUERY_STRING} ^.*artikel.*$ [NC]
    RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
    RewriteRule ^shop/(.*)$ http://www.example.com/$1 [L,R=301]
    Ich brauche aber eine einzelne URL, aber auch so funktioniert es nicht, obwohl diese Syntax ja absolut logisch wäre... Ich verzweifel echt an der Schreibweise von Apache...
    Code:
    RewriteCond %{HTTP_HOST} https://www.alte-domain.de/de/startseite.html$
    RewriteRule ^$ https://www.neue-domain.de [L,R=301]

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Zitat Zitat von x4all Beitrag anzeigen
    Ich finde alle mögliche Beispiele, aber nicht das was bei mir funktioniert. Egal wie ich es schreibe, es klappt nicht.

    Code:
    RewriteEngine on
    
    RewriteCond %{QUERY_STRING} ^.*artikel.*$ [NC]
    RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
    RewriteRule ^shop/(.*)$ http://www.example.com/$1 [L,R=301]
    Wo hast du das eingefügt? Du brauchst nicht selbst "RewriteEngine On" setzen, das existiert ja schon in der default .htaccess von Contao. Du musst deine RewriteRules vor oder nach den anderen Domain RewriteRules setzen (siehe verlinkte Stelle in meinem vorigen Post).


    Zitat Zitat von x4all Beitrag anzeigen
    Ich brauche aber eine einzelne URL, aber auch so funktioniert es nicht, obwohl diese Syntax ja absolut logisch wäre... Ich verzweifel echt an der Schreibweise von Apache...
    Code:
    RewriteCond %{HTTP_HOST} https://www.alte-domain.de/de/startseite.html$
    RewriteRule ^$ https://www.neue-domain.de [L,R=301]
    Das funktioniert nicht. %{HTTP_HOST} ist, wie der name schon sagt, nur der Host, also zB www.example.org, ohne Scheme und ohne Request String.

  9. #9
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Frage

    Ich füge das ab Zeile 203 ein, oberhalb meiner Redirect 301 Regeln und nach URL rewriting.
    Code:
    # URL rewriting
    ##
    <IfModule mod_rewrite.c>
    Das RewriteEngine on hab ich nicht nochmal zusätzlich gesetzt, das war nur ein Beispiel wie die das machen.

    Ja gut, selbst wenn der %{HTTP_HOST} alte-domain.de enthält, dann brauche ich ja noch die weitere URL /de/startseite.html. Dann müsste es ja heißen:

    Code:
    RewriteCond %{HTTP_HOST}/de/startseite.html
    RewriteRule https://www.neue-domain.de [L,R=301]

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Nein, das ist erstens keine gültige RewriteRule und zweitens überprüfst du in der RewriteCond, ob der HTTP_HOST die Zeichen /de/startseite………html enthält . Was natürlich blödsinn ist. In deiner RewriteCond willst du ja auf die Domain prüfen.

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Zitat Zitat von x4all Beitrag anzeigen
    Ich füge das ab Zeile 203 ein, oberhalb meiner Redirect 301 Regeln und nach URL rewriting.
    Code:
    # URL rewriting
    ##
    <IfModule mod_rewrite.c>
    Nein, das ist falsch. Du musst das, wie bereits erwähnt, vor oder nach den anderen Domain Regeln einfügen. Oder anders gesagt: nach der Definition der RewriteBase.

  12. #12
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Frage

    Okay, dann füge ich das nach der RewriteBase ein, in meinem Fall also ab Zeile 249. Mir ist zwar nicht klar warum, aus meiner Logik müsste das eher oben stehen, aber okay.
    Und wie müsste die RewriteCond richtig heißen? Ich will ja nicht Domain prüfen, sondern die URL.
    WENN URL = https://www.alte-domain.de/de/startseite.html DANN leite weiter auf https://www.neue-domain.de
    Nur wie geht das?

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.091
    Partner-ID
    10107

    Standard

    Zitat Zitat von x4all Beitrag anzeigen
    Mir ist zwar nicht klar warum, aus meiner Logik müsste das eher oben stehen, aber okay.
    Damit RewriteCond und RewriteRule funktioniert, muss die RewriteEngine vorher aktiviert sein - daher musst du das nach RewriteEngine On einfügen. Wenn sich deine Contao Installation in einem Unterordner befindet, und du nicht bei jeder RewriteRule diesen Unterordner mit angeben willst, kannst du eine RewriteBase angeben. Diese gilt dann für alle RewriteRules danach. In deinem Fall ist das wahrscheinlich egal, aber prinzipiell sollten eigene RewriteRules einfach nach der RewriteBase Definition der .htaccess.default von Contao eingefügt werden.



    Zitat Zitat von x4all Beitrag anzeigen
    Und wie müsste die RewriteCond richtig heißen? Ich will ja nicht Domain prüfen, sondern die URL.
    Nein, das stimmt nicht. Du willst ja eine RewriteRule nur für eine bestimmte Domain anwenden lassen. Für solche Fälle gibt es die Direktive RewriteCond (Rewrite Condition). Mit der RewriteCond prüfst du also zuerst, ob es sich um die richtige Domain handelt. Die RewriteCond gilt dann für die drauf folgende RewriteRule. Ist die RewriteCond gültigt, wird die RewriteRule verarbeitet.

  14. #14
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Frage

    Gut zu wissen, nur wie müssten die 2 Zeilen Code jetzt richtig heißen? Ich hab ja bald alle Schreibweisen durch...

  15. #15
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard

    Habs hinbekommen

    Code:
    RewriteCond %{HTTP_HOST} www\.altedomain\.de$
    RewriteCond %{REQUEST_URI} ^\/de\/startseite\.html$
    RewriteRule .* https://www.neuedomain.de/ [R=301,L]

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •