Zur Navigation

mehrere Eingaben sollen zum gleichen Ziel führen

1 Sunny

Sorry für den vermutlich unglücklichen Titel - aber ich stehe vollkommen auf dem Schlauch...

Ausgangssituation:

1) Meine Website ist unter http und https erreichbar

2) Meine Website ist mit und ohne www erreichbar

3) Die einzelnen Seiten sind auf dem Server als php gespeichert und auch so erreichbar

Ergänzende Hinweise:

Alle meine Seiten sind einzeln "von Hand" geschrieben, php nutze ich lediglich, um mit Hilfe von include immer gleichbleibende Codeabschnitte einzufügen. Da steckt kein cms dahinter. Das ganze Projekt ist über mehr als 15 Jahre gewachsen und den ganzen Inhalt mal in WordPress oder so "umzuschaufeln" ist für mich keine Option. Nun ist zwar alles ziemlich "oldschool", aber das bin ich mit meinen bald 60 Jahren auch ;)

Gewünscht ist folgende Lösung:

Die Seiten sollen ausschließlich
- als https
- mit www
- der Endung htm
ausgeliefert werden - egal was im Browser eingetippt wurde oder was in einem uralten Link zu meiner Website irgendwo im Web stehen sollte.

Gelegentlich versuchen einige "Spaßvögel", Querys an einen Seitenaufruf anzuhängen, dieser sollte rigoros abgeschnitten werden, wenn die Seite im Browser angezeigt wird. Wobei dieses jedoch nicht unbedingt gelöst werden muß. Genügen würde zunächst, wenn die drei erstgenannten Umleitungen umgesetzt wären.

Wird von außen eine nicht mehr existente Seite verlinkt, soll eine "Fehlerseite" angezeigt werden, das funktioniert allerdings anscheinend fehlerfrei, dazu habe ich in meiner htaccess notiert:

ErrorDocument 401 https://www.example.org/fehler.htm
ErrorDocument 402 https://www.example.org/fehler.htm
ErrorDocument 403 https://www.example.org/fehler.htm
ErrorDocument 404 https://www.example.org/fehler.htm

Aber die Umleitungen... Das kriege ich einfach nicht gebacken. Zumindest nicht so, daß alle drei gleichzeitig funktionieren.

Ich sag schon mal vorab herzlichen Dank für sachdienliche Hinweise.

24.11.2018 12:29

2 Jörg Kruse

Beispiele für kombinierte Weiterleitungen für 1 und 2 hatte ich auf dieser Seite mal aufgelistet:

https://jkip.de/howtos/kanonische-url

Nach deinen Anforderungen wäre das wohl diese:

RewriteEngine on

# Weiterleitung von http(s)://example.com und http://www.example.com
# 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]

Der dritte Punkt ist etwas komplizierter. Zum einen sollen URLs mit der Endung .htm auf URLs mit der Endung .php rewritet werden, zum anderen soll ein Direktaufruf einer URL mit der Endung .php auf die URL mit der Endung .htm weitergeleitet werden. Hier muss man aufpassen, dass man keine Endlosweiterleitung erzeugt. Ich würde es so probieren:

# Weiterleitung nach .htm:
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.+)\.php$ https://www.example.com/$1.htm [R=301,L]

# interner Rewrite nach .php:
RewriteRule ^(.+)\.htm$ $1.php

Die RewriteCond prüft, ob die Endung .php im Request vorkommt, so dass eine durch die letzte Rule erzeugte Endung .php keine Weiterleitung auslöst

24.11.2018 15:17 | geändert: 24.11.2018 15:17

Beitrag schreiben (als Gast)

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





[BBCode-Hilfe]