it-swarm.com.de

So schreiben Sie .htaccess so, dass https nur für Unterseiten, nicht aber für die Homepage aktiviert ist

Das Stammverzeichnis meiner Domain leitet erfolgreich in ein Unterverzeichnis um, dh example.com leitet zu example.com/abc um.

example.com hat kein WordPress installiert.

example.com/abc hat eine eigene WordPress-Installation.

Die Homepage auf http://example.com/abc ist nicht HTTPS und ich möchte nicht, dass es HTTPS ist. Ich möchte jedoch, dass alle Unterseiten HTTPS sind (z. B. https://example.com/abc/xyz oder https://example.com/abc/thistoo).

Meine aktuelle .htaccess-Datei ist das Standard-WordPress-Zeug ...

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /abc/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abc/index.php [L]
</IfModule>

# END WordPress

Ich habe viele andere Lösungen geprüft und ausprobiert, die ich hier gefunden habe, aber bisher keine Freude.

p.s. Ich weiß, dass ich Permalinks erneut speichern muss, nachdem ich solche Änderungen an der .htaccess-Datei vorgenommen habe.

1
au_Martin

Vermutlich befindet sich Ihre .htaccess-Datei im Unterverzeichnis /abc? In diesem Fall können Sie wie folgt vorgehen, um HTTPS auf allen Unterseiten außer der Homepage zu erzwingen:

Dies muss ganz oben in Ihrer .htaccess-Datei stehen:

RewriteCond %{HTTPS} !on
RewriteRule !^(index\.php)?$ https://example.com%{REQUEST_URI} [R=302,L]

Dies setzt voraus, dass das SSL-Zertifikat direkt auf Ihrem Anwendungsserver installiert ist.

Das negierte RewriteRule Muster !^(index\.php)?$ entspricht nur nicht leeren (oder nicht index.php ) URL-Pfade, somit ist die Homepage ausgeschlossen.

Ändern Sie den 302 (temporär) nur dann in 301 (permanent), wenn Sie sicher sind, dass er ordnungsgemäß funktioniert, um Caching-Probleme zu vermeiden. Leeren Sie vor dem Testen Ihren Browser-Cache.


Nebenbei:

RewriteBase /abc/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abc/index.php [L]

Da Sie die Direktive RewriteBase festgelegt haben, können Sie das Verzeichnispräfix aus der Ersetzung RewriteRule entfernen (dies ist die Vorgehensweise der Direktive RewriteBase):

RewriteRule . index.php [L]

Da sich Ihre .htaccess-Datei jedoch im /abc-Unterverzeichnis befindet, benötigen Sie weder die RewriteBase-Direktive noch das Verzeichnispräfix.

0
MrWhite