it-swarm.com.de

Nicht-www-https-Modus für ein Verzeichnis und seine Unterordner erzwingen

Meine Stammwebsite (example.com) und ihr Ordner (example.com/folder) haben zwei verschiedene CMS (Opencart für example.com und WordPress für example.com/folder).

Ich verwende diesen Code in example.com, um den Nicht-WWW-https-Modus zu erzwingen:

RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

Dieser Code funktioniert perfekt für example.com und alle seine Unterordner erwarten für example.com/folder mit WordPress CMS.

Was soll ich machen?

1
Pasakgroup

Vermutlich möchten Sie, dass diese Anweisungen auch für die WordPress -Installation im Unterverzeichnis gelten - aber derzeit wird nichts für WordPress unternommen, nehme ich an?

Dieses Verhalten wird erwartet, wenn Sie WordPress "hübsche" Permalinks aktiviert haben. Da die mod_rewrite-Direktiven in der WordPress .htaccess -Datei (im Unterverzeichnis) die mod_rewrite-Direktiven in der übergeordneten .htaccess -Datei vollständig überschreiben. Die mod_rewrite-Direktiven im übergeordneten .htaccess werden nicht verarbeitet.

Sie können die mod_rewrite-Vererbung verwenden, dies hängt jedoch davon ab, welche anderen mod_rewrite-Anweisungen Sie in der übergeordneten .htaccess -Datei und in Ihrer Serverkonfiguration (insbesondere in der Apache-Version) haben. Außerdem ist es wahrscheinlich vorteilhaft, die OpenCart- und WordPress -Konfigurationen so weit wie möglich voneinander zu trennen.

Die einfachste Lösung besteht darin, diese Anweisungen am Anfang der Datei .htaccess im Unterverzeichnis WordPress zu reproduzieren. Sie können sie jedoch nicht einfach unverändert kopieren, da Sie sonst wahrscheinlich das Unterverzeichnis der umgeleiteten URL verlieren, wenn Sie die Unterdomäne www anfordern.

Versuchen Sie beispielsweise Folgendes oben in der Datei example.com/folder/.htaccess:

RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
1
MrWhite