2016-10-20 5 views
0

Warum wird .htaccess nicht alle Unterverzeichnisse zwingen, SSL zu verwenden?Unterverzeichnis kann nicht an SSL umgeleitet werden

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

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

Mein besonderer Anwendungsfall: Ich Wordpress in einem Unterverzeichnis installiert habe, und ich bin mit mod_rewrite zu „verstecken“, dass von meinen Website-Besuchern (docs in example.com/wordpress gespeichert ist, sondern an den Browser als example.com erscheinen) . Alles gut dort. Ich habe das HTTPS-Rewrite nach Anweisungen hinzugefügt, die in unzähligen Posts gefunden wurden. Aber wenn ich zu example.com/nextcloud blättern werde alle Dateien über HTTP serviert!

Es gibt eine .htaccess Datei in meinem /nextcloud Unterverzeichnis. Der einzige Abschnitt mod_rewrite Zusammenhang lautet wie folgt:

RewriteEngine on 
    RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
    RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L] 
    RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L] 
    RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L] 
    RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L] 
    RewriteRule ^remote/(.*) remote.php [QSA,L] 
    RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L] 
    RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.* 
    RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L] 

ich nur eine sehr grundlegende Kenntnisse der .htaccess Dateien haben, aber mein Verständnis ist, dass es top-down (.htaccess in Unterverzeichnisse können die Einstellungen höher Verzeichnisse überschreiben) arbeitet außer für mod_rewrite, was ein Sonderfall ist und umgekehrt funktioniert (das oberste Verzeichnis hat Vorrang).

Wenn mein Verständnis stimmt, warum funktioniert mein Code nicht?

+0

Also, nach außen sollte nextcloud von seinem Unterverzeichnis serviert werden, aber die WordPress-Website sollte von der Wurzel bedient werden? Wenn ja, gibt es eine einfache Lösung. – Walf

+0

@Walf Das ist richtig; das versuche ich zu erreichen. –

Antwort

0

In Ihrem /.htaccess, fügen Sie diese über alle anderen Bedingungen/Regeln:

RewriteRule ^nextcloud(?:$|/) - [L] 

, dass Wordpress verhindert, dass jemals die Anfragen bekommen.

In Ihrem /nextcloud/.htaccess setzen

RewriteBase /nextcloud/ 

Auch sollte Ihre Wurzel Basis sollte nicht nur / da, dass der öffentliche Weg zu Wordpress ist? Wie werden statische Dateien korrekt weitergeleitet? Z.B. Wie kommt example.com/real/file zu example.com/wordpress/real/file?

Verwandte Themen