2016-10-20 8 views
0

なぜこのようになりません.htaccessすべてのサブディレクトリにSSLを使用させますか?サブディレクトリをsslにリダイレクトできません

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

私の特定のユースケース:私はサブディレクトリにインストールワードプレスを持っている、と私はmod_rewriteを使用していると「隠す」という私のサイトの訪問者からの(ドキュメントはexample.com/wordpressに保存されているが、example.comとしてブラウザに表示されています) 。すべての良いそこに。私は無数の投稿にある命令ごとにHTTPSリライトを追加しました。しかし、example.com/nextcloudにアクセスすると、すべてのファイルがHTTP経由で配信されます。

/nextcloudサブディレクトリに.htaccessファイルがあります。次のようにmod_rewriteに関係する部分だけを読み取ります(サブディレクトリ内.htaccessが高いディレクトリの設定を上書きすることができます)

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] 

は私だけ.htaccessファイルの非常に基本的な知識を持っていますが、私の理解では、それはトップダウンで動作することですを除き、特殊なケースであり、逆の方法で動作します(最上位のディレクトリが優先されます)。

私の理解が真実なら、私のコードはなぜ機能しないのですか?あなたの/.htaccess

+0

だから、外の世界には、そのサブディレクトリからnextcloudが提供されるはずですが、WordPressサイトはルートから提供されるべきですか?もしそうなら、簡単な解決策があります。 – Walf

+0

@ Walf正しいことです。それは私が達成しようとしているものです。 –

答えて

0

、他のすべての条件/ルールの上にこれを追加します。これまでの要求を得ることから、ワードプレスを防ぐ

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

を。あなたの/nextcloud/.htaccess

は、また

RewriteBase /nextcloud/ 

を設定することはWordPressへの公共のパスがあるため、ルートベースがちょうど/あるべきではないでしょうか?静的ファイルはどのように正しくルーティングされますか?例えば。どのようにexample.com/real/fileexample.com/wordpress/real/fileに行くのですか?

関連する問題