Christian: .htacces ReWrite funktioniert mit HTTPS nicht mehr

Hallo zusammen,

was Apache betrifft bin ich ein absoluter Newbie, also schon mal entschuldigung falls ich etwas falsch formuliere.

Ich habe eine Apache Server (CentOS) am laufen und hatte eine .htaccess Datei erstellt die eine URL umschreibt, seit ich auf HTTPS umgestellt habe funktioniert jedoch diese Regel nicht mehr. Ich hoffe Ihr könnt mir da weiter helfen.

Es wird die Seite https://abc.de/broadcast/live/?instance=query aufgerufen, basierend auf meiner IP handelt es sich um einen Deutschen User, und die URL soll auf https://abc.de/broadcast/live/?instance=delx004 umgeändert werden.

Wie gesagt mit HTTP kein Problem, mit HTTPS passiert einfach gar nichts mehr.

# Rule for German clients.
RewriteCond expr "-R '10.232.0.0/16'
RewriteCond %{QUERY_STRING} ^query$
RewriteRule ^$ /broadcast/live/?instance=delx004 [R,L]

Schon mal vielen Dank für Eure Hilfe.

Gruß, Christian

  1. Dein Auszug aus der Apache-Config gibt keinen Fehler im Zusammenhang mit einem Wechsel auf https her. Allerdings frage ich mich, ob die Quotas hier richtig gesetzt sind:

    RewriteCond expr "-R '10.232.0.0/16'
    

    Der Highlighter zeigt die vermutlich fehlerhafte Stelle an. Allerdings würde ich hier vermuten, dass zum DoubleQuota am Beginn des Strings eine Entsprechung am Ende fehlt. Die Konsequenz wäre ein 500er.

    seit ich auf HTTPS umgestellt habe funktioniert jedoch diese Regel nicht mehr.

    "Funktioniert nicht mehr" ist "wenig erhellend". Was genau "funktioniert nicht mehr"?

    Auf Grund der privaten IP und weil abc.de nicht erreichbar ist gehe ich davon aus, dass der Webserver nicht von außen erreichbar sein soll, ich also nichts untersuchen kann. (Verwende deshalb bitte "example.org" statt "abc.de"!) Die Ausgaben von

    wget -d --delete-after https://abc.de/broadcast/live/?instance=query
    

    oder aus der Netzwerkanalyse der Entwicklungstools Deines Browsers sowie natürlich ein Blick in Error-Log und ins Zugriffs-Log könnten erhellend sein.

    Hint: wget(.exe) gibt es auch für Windows.

    1. Hallo Regina,

      erstmal vielen Dank für die schnelle Antwort.

      Ja, es handelt sich dabei um einen Server im Intranet der nicht von extern erreichbar ist.

      Was nicht mehr funktioniert ist die "Weiterleitung", sprich wenn ich die URL https://example.org/broadcast/live/?query öffne, solltes Apache das automatisch auf https://example.org/broadcast/live/?instance=abcde abändern.

      Leider passiert da aber jetzt nichts mehr. Im Moment habe ich leider auch keinen Zugriff auf den Server, da grade ein Backup gemacht wird.

      Was ich erreichen möchte ist.

      1. Benutzer die sich in einem definierten IP Subnet befinden und bei der die URL den Wert ../?query öffnen sollen auf ../?instance=abcd umgeleitet werden.

      2. Wenn ../?query fehlt soll auf eine andere URL umgeleitet werden.

      Beispiel 1: Aufruf https://example.org/broadcast/live/?query Umleitung https://example.org/broadcast/live/?instance=abcd

      Beispiel 2: Aufruf https://example.org/broadcast/live/ Umleitung https://example.org/broadcast

      Im Verzeichnis https://example.org/broadcast/live/ befindet sich eine index.php die den parameter "instance" abgreift. <?php echo ""http://" . $_GET["instance"] . ":8080/hls/live_eia/index.m3u8"";?>>

      Danke im Voraus

      1. Lieber Christian,

        Ja, es handelt sich dabei um einen Server im Intranet der nicht von extern erreichbar ist.

        ist auf diesem ein gültiges SSL-Zertifikat installiert worden? Ohne ein solches haben die HTTP-Clients (Browser, Wget etc.) Probleme, eine verschlüsselte Verbindung aufzubauen. Da Du schreibst, dass Du in Sachen Apache ein "Newbie" seist... da drängt sich mir der Verdacht auf, dass Du eben kein SSL-Zertifikat installiert hast. Liege ich damit richtig?

        Liebe Grüße,

        Felix Riesterer.

        1. Hallo Felix,

          ja ich habe ein Zertifikat installiert das von unsere CA kommt. Im Browser wird auch angezeigt dass das Zertifikat gültig ist.

          LG, Christian

          1. Lieber Christian,

            Im Browser wird auch angezeigt dass das Zertifikat gültig ist.

            sehr gut! Eine Fehlerquelle aussortiert.

            Wie ist es Dir denn mit den doppelten und einfachen Anführungszeichen gegangen, die man Dir schon angemerkt hat?

            Liebe Grüße,

            Felix Riesterer.

  2. Ich würde als erstes allen HTTP-Anfragen auf HTTPS weiterleiten:

    RewriteEngine on
    
    RewriteCond %{HTTPS} off
    
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
    

    Und danach weitere Rewrite-Regeln platzieren. Wir hatten auch mehrere Konflikte in .htaccess-Datei.

    Quelle: .htaccess : redirect HTTP to HTTPS

  3. Hallo Christian,

    Es wird die Seite https://abc.de/broadcast/live/?instance=query aufgerufen, …

    bezieht sich deine Frage tatsächlich auf die Hille & Partner GbR oder meintest du eher http(s)://example.[org|net|com]?

    Wie gesagt mit HTTP kein Problem, mit HTTPS passiert einfach gar nichts mehr.

    Definiere „passiert gar nichts mehr“.

    # Rule for German clients.
    RewriteCond expr "-R '10.232.0.0/16'
    RewriteCond %{QUERY_STRING} ^query$
    RewriteRule ^$ /broadcast/live/?instance=delx004 [R,L]
    

    Deine Regel zum Erkennen „deutscher Nutzer“ irritiert mich. Mich erkennst du damit nicht als deutschen Nutzer und ich bin einer.

    Viele Grüße
    Robert