Die Website-Umleitung funktioniert zeitweise in Firefox, jedoch überhaupt nicht im IE [Duplikat].

Apr 04 2020

Nachdem nur wenige einen Fehler bei der Website-Umleitung versucht haben, kann ich eine Website-Umleitung durchführen, die jedoch in Firefox zeitweise, im IE jedoch überhaupt nicht funktioniert. Ich schaffe es, den gesamten Cache zu löschen und es in Firefox erneut zu versuchen, und es funktioniert, aber seltsamerweise funktioniert es danach nicht mehr. Ich habe bestätigt, dass ich zu diesem Zeitpunkt keine Änderungen an Dateien vorgenommen habe. Hatte jemand schon einmal eine Idee oder ein Gesicht dazu? Ich war sooooo froh, dass meine Website endlich umleitet, auch wenn ich 2 Minuten glücklich war, dann stellte sich heraus, dass sie nicht wieder umgeleitet wurde. : ((Ich brauche es nur, um umzuleiten, wenn ich http://example.com eingebe. Es leitet zu https://www.example.com weiter. Unten ist meine Umleitung in die .htaccess-Datei:

RewriteEngine On
#Options +FollowSymLinks
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$[OR] RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Unten sind meine Protokolle:

init rewrite engine with requested uri /
pass through /
[perdir D:/wamp64/www/example/] strip per-dir prefix: D:/wamp64/www/example/ -> 
[perdir D:/wamp64/www/example/] applying pattern '.*' to uri ''
[perdir D:/wamp64/www/example/] RewriteCond: input='off' pattern='!on' => matched
[perdir D:/wamp64/www/example/] RewriteCond: input='www.example.com' pattern='^www\\.example\\.com$' => matched
[perdir D:/wamp64/www/example/] rewrite '' -> 'https://www.example.com/'
[perdir D:/wamp64/www/example/] explicitly forcing redirect with https://www.example.com/
[perdir D:/wamp64/www/example/] escaping https://www.example.com/ for redirect
[perdir D:/wamp64/www/example/] redirect to https://www.example.com/ [REDIRECT/301]

Ich habe auch festgestellt, dass meine Website nur umgeleitet wird, wenn ich mich von VPN abmelde (ich muss VPN, damit ich eine Verbindung zum Server herstellen kann, um die Informationen zu reparieren oder abzurufen, die ich für die Umleitung vorgenommen habe).

Unten ist das Element, das ich in der .htaccess-Datei hinzugefügt habe:

    RewriteCond %{HTTPS} !on [OR]
    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteCond %{HTTP_HOST] ^www\.example\.com$
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Unten sind meine httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "d:/wamp64/www/example"
    <Directory  "d:/wamp64/www/example/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    </Directory>
</VirtualHost>

Mein SSL-Zertifikat wurde in httpd-ssl.conf konfiguriert, daher zeige ich meine httpd-vhosts.conf als VirtualHost *: 80 Nachfolgend finden Sie meine httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "d:/wamp64/www/example"
    <Directory  "d:/wamp64/www/example/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    </Directory>
</VirtualHost>

Aktualisieren

Folgendes aktualisiere ich in .htaccess durch Hinzufügen von [ODER]:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Und unten sind die Protokolle, die ich bekommen habe:

strip per-dir prefix: D:/wamp64/www/example/ -> 
applying pattern '.*' to uri ''
RewriteCond: input='off' pattern='!on' => matched
rewrite '' -> 'https://www.example.com/'
explicitly forcing redirect with https://www.example.com/
escaping https://www.example.com/ for redirect
redirect to https://www.example.com/ [REDIRECT/301]

Ich habe es im Browser erneut versucht, aber es wurde nicht umgeleitet. Ich versuche auch, in Firefox zu debuggen, und der Host, den ich habe, ist example.com

Das habe ich durch Entfernen von [ODER] erhalten.

RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Protokolle:

RewriteCond: input='off' pattern='!on' => matched
RewriteCond: input='www.example.com' pattern='^example\\.com$' => not-matched

Bitte sagen Sie mir, dass meine Umleitung funktioniert, weil ich seit Monaten daran arbeite und jetzt keine Idee mehr habe (ich hoffe, das liegt nicht an meinem dummen Fehler ... beten!). Bitte helfen Sie mir und danke im Voraus!

Antworten

3 EsaJokinen Apr 04 2020 at 16:56

Ich glaube, Sie wollen diesen Zustand eigentlich nicht:

RewriteCond %{HTTP_HOST} ^www\.example\.com$

Da dies zu einer Endlosumleitungsschleife für sich selbst führen würde, .htaccessgilt dies auch für die https://wwwVersion:

RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
2 liverwust Apr 04 2020 at 16:49

Ich glaube, es ist ein fehlender Leerzeichen. Bitte ändern Sie dies:

RewriteCond %{HTTP_HOST} ^example\.com$[OR]

dazu:

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

Ihre Logfile-Einträge haben bewiesen, dass http://www.example.com erfolgreich in https://www.example.com/ umgeschrieben wurde . Sie haben nichts über http://example.com bewiesen . Durch Hinzufügen des Leerzeichens sollte letzteres behoben werden.

1 dexter Apr 04 2020 at 18:10

Stattdessen mod_rewritesollten Sie in der Virtualhost-Definition Folgendes verwenden:

ServerName  www.example.com
ServerAlias example.com
Redirect permanent / https://www.example.com/

Laut Apache httpd Dokumentation .

mod_rewrite sollte als letzter Ausweg betrachtet werden, wenn andere Alternativen fehlen. Die Verwendung bei einfacheren Alternativen führt zu Konfigurationen, die verwirrend, zerbrechlich und schwer zu warten sind.