Zur Navigation

Die Codes im Artikel "Weiterleiten auf kanonische URL" in abgeänderter Form

1 Schnulli

Hallo Jörg,

als Standard hätte ich gerne http://www.example.com - also eine Weiterleitung von z. B.

https://example.com/
https://example.com/index.html
https://www.example.com/
https://www.example.com/index.html
http://example.com/
http://example.com/index.html
http://www.example.com/index.html

auf http://www.example.com.

Es sollen dabei auch alle Unterseiten weitergeleitet werden, so dass der URL-Pfad dabei erhalten bleibt.

Auch diese "index-Erweiterung" bei der Startseite soll verschwinden.

Für dieses Problem hatte ich mir Folgendes zusammengeschustert:

RewriteEngine on 

# index entfernen
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://www.example.com/ [R=301,L] 

# redirect 
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Ich habe jedoch das Gefühl, dass z. B. die https-URLs nicht weitergeleitet werden.
Deine Codes sind zudem auch viel länger...
Ist die Reihenfolge der Codes eigentlich egal?

Ich kann mich hier nur sehr schwammig ausdrücken - und vielleicht ist auch der eine oder andere Fachbegriff falsch angewandt -, ich beschäftige mich mit der Materie erst seit 7 Tagen.

Für eine Abänderung der Codes in deinem besagten Artikel wäre ich dankbar! Ich glaube das wäre genau das, was mir weiterhelfen würde.

Viele Grüße
Schnulli

23.07.2021 11:42

2 Jörg Kruse

Du willst wirklich von https:// nach http:// weiterleiten?

Du könntest hierzu analog zu meiner Anleitung auf den Standard-Port für HTTPS prüfen, wobei du ^443$ statt !^443$ als regulären Ausdruck verwendest:

# redirect 
RewriteCond %{HTTP_HOST} !^www.example.com$ [OR]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Aber empfehlen würde ich so eine Weiterleitung auf die unverschlüsselte (und somit unsichere) Variante nicht.

23.07.2021 12:58 | geändert: 23.07.2021 12:59

3 Schnulli

Hallo Jörg,

das ist genau der Artikel, den ich meinte (hätte ich mal verlinken sollen...).

Ich kenne mich mit dieser SSL-Zertifikat-Materie bislang noch nicht aus. Bisher habe ich auch keinen entsprechenden Tarif dafür gebucht. Mein Webhoster (https://all-inkl.com/webhosting/lets-encrypt-ssl-zertifikate/) bietet - soweit ich das verstanden habe - lediglich diese kostenlosen Let’s-Encrypt-SSL-Zertifikate an. Wie lange diese jedoch kostenlos bleiben, kann er nicht sagen.
Mit SSL muss ich mich später noch mal auseinandersetzen.

Für mich ist erst einmal wichtig, dass meine Seiten korrekt weitergeleitet werden und es zu keinem duplicate content kommt.
Hätte ich eine https-URL, dann hätte ich den Code in deinem Artikel doch eins zu eins übernehmen können, oder?

Kann ich den Code, mit dem du jetzt geantwortet hast in meine .htaccess Datei einfügen?

23.07.2021 13:42

4 Schnulli

Ok, ok. Habe gerade auf die Schnelle herausgefunden, wie ich bei meinem Webhoster für meinen Tarif problemlos eine SSL-Zusatzoption buchen kann. Das werde ich demnächst tun und solange mit deinem o. a. Code arbeiten. Vielen Dank dafür!

Nur noch eine Zusatzfrage:
Nach Erhalt des SSL-Zertifikats schreibe ich dann in meine .htaccess Datei:

RewriteEngine on
RewriteBase /

# Weiterleitung nach https://www.example.com:
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Weiterleitung von https://www.example.com/index.html nach https://www.example.com/:
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /index\.html
RewriteRule ^index\.html https://www.example.com/ [R=301,L]

Richtig?

23.07.2021 15:22

5 Jörg Kruse

Habe gerade auf die Schnelle herausgefunden, wie ich bei meinem Webhoster für meinen Tarif problemlos eine SSL-Zusatzoption buchen kann. Das werde ich demnächst tun und solange mit deinem o. a. Code arbeiten.

Mit dem Code aus Beitrag 2 leitest du nicht vorübergehend, sondern dauerhaft weiter! Ich würde erst weiterleiten, wenn du das Zertifikat fertig eingerichtet hast, und dann von http:// nach https://! Andersrum weiterzuleiten, macht keinen Sinn. Entweder https ist noch nicht eingerichtet, dann kann eine Weiterleitung eh nicht ausgeführt werden; oder https ist schon eingerichtet, dann ist eine permantente Weiterleitung nach http:// kontraproduktiv.

Nur noch eine Zusatzfrage:
Nach Erhalt des SSL-Zertifikats schreibe ich dann in meine .htaccess Datei:

RewriteEngine on
RewriteBase /

# Weiterleitung nach https://www.example.com:
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Weiterleitung von https://www.example.com/index.html nach https://www.example.com/:
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /index\.html
RewriteRule ^index\.html https://www.example.com/ [R=301,L]

Richtig?

Ich würde den angepassten .htaccess Code gründlich testen (das sollte man grundsätzlich tun), dann sollte er passen :)

23.07.2021 15:47 | geändert: 23.07.2021 15:47

6 Schnulli

Alles klar, verstanden.

Ganz, ganz herzlichen Dank!

23.07.2021 16:01

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]