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.
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.