Zur Navigation

https per htaccess erzwingen

1 martin1

Hallo zusammen,

wir müsste ich denn die vorhandene .htaccess-Datei anpassen, sodass immer https genutzt wird?

Ferne wollte ich, dass als Startseite die Themen-Übersicht eines bestimmten Forums angezeigt wird. Versuche ich das ebenfalls mittels der .htaccess und dem folgenden Beispiel-Befehl zu lösen zu lösen, erhalte ich nur eine Fehlermeldung.

DirectoryIndex /changelogs-f-4-1 /index.php

07.09.2016 14:27

2 Jörg Kruse

Hallo auch lächel

Zitat von martin1
wir müsste ich denn die vorhandene .htaccess-Datei anpassen, sodass immer https genutzt wird?

Würde ich so probieren:

RewriteEngine on

# RewriteBase /

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$  https://example.com/$1 [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.php [L]

Die zweite Frage habe ich mal in einem extra Thread beantwortet:

https://jkbb.de/forum/unterforum-als-startseite-t-426-1

07.09.2016 16:26

1 Forenmitglied fand diesen Beitrag gut

3 martin1

Hi lächel,

Zitat von Jörg

Würde ich so probieren:

RewriteEngine on

# RewriteBase /

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$  https://example.com/$1 [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.php [L]

Das klappt so leider auch nicht, Firefox spuckt dann folgendes aus:

Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Nur für den Fall, dass die Frage aufkommen sollte -> Ja, natürlich habe ich die Domain aus dem Beispiel angepasst. zwinker

Edit: Hast Du das in diesem Forum auch exakt so umgesetzt?

08.09.2016 00:22 | geändert: 08.09.2016 00:23

4 Jörg Kruse

Dieses Forum leite ich nicht in der .htaccess Datei, sondern in der Webser-Konfiguration im betreffenden VirtualHost-Container für den Port 80 auf die https URL weiter - so dass ich dort ohne RewriteCond auskomme. Auf einem anderen Server habe ich das aber so in der .htaccess Datei umgesetzt. Allerdings habe ich oben noch vergessen, den Status Code 301 zu setzen:

RewriteRule ^(.*)$  https://example.com/$1 [L,R=301]

... damit Google und Co auch nur die https Seiten indizieren. An dem Problem der Endlosweiterleitung wird das aber nichts ändern

Vielleicht funktioniert diese alternative Vorgehensweise:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$  https://example.com/$1 [L,R=301]

08.09.2016 09:11 | geändert: 08.09.2016 09:12

5 martin1

Leider spuckt die alternative Vorgehensweise einen ähnlichen Fehler aus: Sie wurden zu oft weitergeleitet.

Lässt sich alternativ zu der htaccess-Methode vielleicht auch etwas mit PHP umsetzen? In etwa so:

if (!isset($_SERVER['HTTPS']))

08.09.2016 10:56

6 Jörg Kruse

In PHP könnte die Weiterleitung so funktionieren:

<?php

if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') {
    header("HTTP/1.1 301 Moved Permanently");
    header('Location: https://example.com/' . $_SERVER['REQUEST_URI']);
    header("Connection: close");
    exit;
}

Es wäre allerdings merkwürdig, wenn es dort funktioniert, in der .htaccess Datei aber nicht. Hast du in letzterer noch andere Weiterleitungen oder Rewrites drin? falls ja, muss die https Weiterleitung ganz nach oben!

Bei den Beispielen bin ich zudem davon ausgegangen, dass das Forum im Wurzelverzeichnis installiert ist, andernfalls muss der Pfad natürlich auch noch in die Ziel-URL eingebaut werden. Außerdem können ggf. noch .htaccess Dateien übergeordneter Verzeichnisse dazwischenfunken

Und noch ein Punkt:

was steht in Admin -> Administration -> Allgemein im Eingabefeld "Kanonische URL" - eine URL mit "https://"?

08.09.2016 11:41 | geändert: 08.09.2016 11:49

7 martin1

Guten Abend,

Nein, keine weiteren Rewrites, nur die originale htaccess-Datei vom JKBB. War ganz oben direkt unter "RewriteEngine on" drin.

Das passt so, Forum liegt im Hauptverzeichnis.

Ja, ist bei Canonical mit https drin.

Wo müsste ich denn den PHP-Code einfügen, in die index.php?

Vielen Dank für die Mühen und Gruß
Martin lächel

08.09.2016 20:12

8 Jörg Kruse

Ja, ganz an den Anfang der index.php

08.09.2016 20:27

9 martin1

Gleicher Fehler und es erzeugt folgende Adresse in der Adresszeile des Browsers: https://example.com/////////////////////

Das Alles hat aber nicht vielleicht damit etwas zu tun, dass ich ein bestimmtes Unterforum auf der Startseite anzeigen lasse?

08.09.2016 20:34

10 Jörg Kruse

OK, da ist noch ein Slash zuviel, der jedesmal wieder dran gehängt wird::

    header('Location: https://example.com' . $_SERVER['REQUEST_URI']);

Das wird aber auch nicht das Problem der Endlosweiterleitung lösen.

Es ist wohl so, dass nicht jeder Server die Umgebungsvariable HTTPS setzt. Allerdings sollte er dann hier auch nicht darauf anspringen:

RewriteCond %{HTTPS} off

Lass dir die Umgebungsvariablen mal in einer Datei test.php ausgeben:

<?php

echo 'HTTPS: ' . $_SERVER['HTTPS'] . '<br/>';
echo 'SERVER_PORT: ' . $_SERVER['SERVER_PORT'] . '<br/>';

... und ruf die Datei einmal unter der Adresse http://example.com/test.php und einmal unter https://example.com/test.php auf


und nochwas:

manchmal kommen einem beim testen die Browser-Caches in die Quere, auch und gerade bei Weiterleitungen - deswegen würde ich zwischendurch mal den Browser-Cache leeren

08.09.2016 20:52 | geändert: 08.09.2016 20:54