rewrite from HTTP to HTTPS

Alles, was den Apache betrifft, kann hier besprochen werden.

rewrite from HTTP to HTTPS

Postby nimmini » 29. August 2019 21:48

Hallo!

Ich leite alle Anfragen nach http auf https um.

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

Jetzt möchte ich weiterhin alle umleiten bis auf eine Ausnahme. Dazu dachte
ich, ich füge folgende condition ein, aber die scheint nicht zu greifen.

RewriteCond %{REQUEST_URI} !^/einhost.de

Kann mir hier jemand weiterhelfen?

Grüße

Andreas
nimmini
 
Posts: 10
Joined: 28. August 2015 15:07
Operating System: Linux

Re: rewrite from HTTP to HTTPS

Postby Nobbie » 30. August 2019 16:49

Wo ist das denn eingefügt und wie? Und was SOLL diese Bedingung denn bewirken?
Was aber auch auffällt, ist die komische Namensgebung - "einhost.de" klingt eigentlich nach einem Domainnamen, aber es ist eine Datei oder ein Ordner?

Nur um mal ein Beispiel zu nennen:

Wenn Du http://localhost/einhost.de/index.html in den Browser eingibst, ist die Bedingung

Code: Select all
RewriteCond %{REQUEST_URI} !^/einhost.de


WAHR. Denn die URI ist NICHT /einhost.de, sondern /einhost.de/index.html - ist das wirklich das, was Du willst?

Ich vermute mal, dass Du IMMER dann NICHTS machen willst, wenn am Anfang /einhost.de steht. Das könnte man auch mit einer weiteren RewriteRule und einem Skip bewerkstelligen:

Code: Select all
RewriteCond %{HTTPS} off
RewriteRule "^/einhost\.de" "-" [S=1]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


Die RewriteRule mit einhost.de leitet auf "-" um, das ist der Metasyntax für "ungeänderte URL". Der Flag S bedeutet "Skip", die zugewiesene Zahl (hier S=1) nennt die Anzahl nachfolgender Anweisungen, die übersprungen werden sollen (in diesem Fall reicht die eine Zeile). In manchen Serverkonfigurationen kann am Anfang der URI der Slash fehlen, im Fall des Falles auch dieses Pattern probieren:

Code: Select all
RewriteCond %{HTTPS} off
RewriteRule "^einhost\.de" "-" [S=1]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


Ist sonst genau das gleiche, nur der Slash vor "einhost.de" ist nicht vorhanden. Den Punkt "." sollte man mit Backslash escapen, denn ein Punkt ist ein Sonderzeichen und erlaubt JEDES Zeichen an dieser Stelle.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: rewrite from HTTP to HTTPS

Postby nimmini » 30. August 2019 20:54

Hallo!

Zunächste Danke für diese ausführliche Empfehlung!

Ich will alles außer der domaine nimmini.de auf https umleiten. Deine rewrites habe ich getestet, habe aber offenbar das Problem, dass unter Centos 7 der Apache den unter /etc/httpd/conf.d angelegten namevirtualhost komplett ignoriert und den Inhalt des default servers unter /etc/httpd/conf/httpd.conf präsentiert. Das sollte er nach meinem Verständnis und Erklärungen in der /etc/httpd/conf/httpd.conf nicht tun.

# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition. These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

Genau das geschieht aber nicht. Ich habe viele Versuche unternommen, immer wird der Inhalt präsentiert, der in der default httpd.conf definiert ist.
Ich komme damit nicht klar und es ist mir ein Rätsel, was da schief läuft.

<Virtualhost 92.60.38.182:80>
ServerAdmin webadmin@nimmini.de
ServerName www.nimmini.de
ServerAlias nimmini.de *.nimmini.de

DocumentRoot /var/www/nimmini/root

DirectoryIndex index.html index.php

<Directory /var/www/nimmini/root>
AllowOverride All
Require all granted
</Directory>

ErrorLog /var/www/nimmini/logs/nimmini-error.log
CustomLog /var/www/nimmini/logs/nimmini-access.log combined
</Virtualhost>

Ein Apache unter openSUSE hat damit keine Probleme, nur mit Centos komme ich da nicht klar.

Ich könnte da wirklich Hilfe gebrauchen, weis aber nicht, wo ich da anfragen kann. Ich kann dazu hier auch ein neues Thema eröffnen, aber das Problem habe ich ja jetzt hier beschrieben.

Warum ignoriert der Apache diesen VirtualHost?

Grüße

BTW, ich erhalte keine Benachrichtigung, wenn hier auf das Thema geantwortet wurde.
nimmini
 
Posts: 10
Joined: 28. August 2015 15:07
Operating System: Linux

Re: rewrite from HTTP to HTTPS

Postby Nobbie » 30. August 2019 21:05

nimmini wrote:Warum ignoriert der Apache diesen VirtualHost?


Weil Du (irgendwo) etwas falsch machst.

Also mit dem ursprünglichen Beitrag hat das alles überhaupt gar nichts mehr zu tun, jetzt musst Du selbst herausfinden, warum Dein VirtualHost nicht funktioniert. Dafür gibt es zwei grobe Gründe:

a) du hast irgendwo einen Fehler eingebaut
b) die Datei, wo die VirtualHosts definiert werden, wird gar nicht inkludiert (ist wahrscheinlich ein "#" vor dem notwendigen include).

Viel mehr Möglichkeiten gibt es nicht. Mit der Option "-S" kann man Apache starten, er berichtet dann, welche VirtualHosts er findet. Und ein Blick durch alle Error Logs schadet auch nicht. Mehr kann ich nicht für Dich tun, das mußt Du selbst finden, was Du übersehen hast.

So oder so bist Du hier eigentlich total falsch, denn hier geht es ausschließlich um Xampp resp. hier unter Apache unter Xampp. Die Struktur der Apache Konfiguration unter CentOS kenne ich genauso wenig wie unter OpenSuSE. Das ist DEINE Aufgabe, diese Strukturen zu verstehen und richtig zu bedienen. Xampp ist eine distributionsunabhängige Installation, da sähen die Konfigurationen für alle DIstributionen gleich aus, aber Du hast Dich ja gegen Xampp entschieden.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 268 guests