it-swarm.com.de

RewriteEngine .htaccess-Regeln werden am Ende zu example.net/https:/example.net umgeleitet

Ich fange an, etwas über den Apache .htaccess zu lernen, und ich habe einige Probleme auf meiner Website ...

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

RewriteCond %{HTTP_Host} ^example$ [NC,OR]
RewriteCond %{HTTP_Host} ^www.example.net$
RewriteCond %{REQUEST_URI} !myfolder-public/
RewriteRule (.*) /myfolder-public/$1 [L]

Das zweite RewriteRule existiert, weil ich einen anderen Ordner (genannt myfolder-public) benötige, um meine Domain umzuleiten, aber wenn ich dies in den Webbrowser lege: example.com ohne HTTPS leitet die Seite weiter zu: example.net/https:/example.net und ich weiß nicht, wie ich das beheben soll, irgendeine Hilfe?

RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

Dies liegt wahrscheinlich daran, dass Sie das Flag L (Last) in der Umleitungsrichtlinie vermissen. Es sollte lauten:

RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

(Sie müssen auch nicht das Muster(.*) erfassen, wenn Sie in Ersetzung keinen Rückverweis verwenden.)

Ohne das Flag L wird die Verarbeitung in der Datei fortgesetzt, und es sieht so aus, als würde sie möglicherweise von Ihrem späteren Umschreiben erfasst. Die vorherige Anweisung hat jedoch bereits den 3xx-Status festgelegt, sodass die URL erneut geschrieben und anschließend umgeleitet wird.

Obwohl ich denke, dass in Ihrem Beispiel etwas verloren gegangen ist, als Sie zwischen den Domänen .com und .net gewechselt haben? Sie vermissen die TLD von der ersten Bedingung in Ihrem Umschreiben und wo ist der /myfolder-public in der fehlerhaften Umleitung gelandet?

1
MrWhite