サブドメインでWordPressマルチサイトをセットアップしています。 5つのサブドメインを指定しました。メインドメインと他のサブドメインにもSSLをインストールしました。
Www以外のメインドメインをwwwにリダイレクトし、すべての(メインドメイン+サブドメイン)をhttpsにリダイレクトするためのリダイレクトコードを以下に記述しました。
RewriteCond %{HTTP_Host} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
それまでは大丈夫です。
しかし、https://www.example.com/any-404-page
のような404 URLにアクセスすると、https://www.example.com/www.example.com
にリダイレクトされ、ERR_TOO_MANY_REDIRECTSが返されます。
.htaccessコードが原因で発生していますか?
Www以外のメインドメインをwwwにリダイレクトし、すべての(メインドメイン+サブドメイン)をhttpsにリダイレクトするためのリダイレクトコードを以下に記述しました。
RewriteCond %{HTTP_Host} !^(.*)\.(.*)\. [NC] RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
これはおそらくあなたの差し迫った問題は別ですが、このコードはあなたが言うことをしません。実際、現状では、このコードはあなたが示唆するように、サブドメインに対しては何もしません!?
具体的には...
RewriteCond %{HTTP_Host} !^(.*)\.(.*)\. [NC]
この条件はサブドメインでは成功しません。または完全修飾メインドメイン(シングルレベルTLDの場合はメインドメインを除くすべての有効なホスト名が少なくとも2つのドットセグメント)。したがって、次のRewriteRule
は処理されません。
RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
これにより、HTTPは常にHTTPにリダイレクトされ、HTTPSはHTTPSにリダイレクトされます。HTTPはHTTPSにリダイレクトされません。それが必要な場合は、@ Stephenがコメントで示唆したように、s
the substitutionをハードコーディングする必要があります。
WordPressのNOBLOGREDIRECT
定数が原因でした。 NOBLOGREDIRECT
をwww.example.com
として定義したので、そのURLが存在しない場合は、https://www.example.com/www.example.com
にリダイレクトします。
NOBLOGREDIRECT
をwww.example.com
からhttps://www.example.com
に変更し、現在はホームページにリダイレクトしています。