web-dev-qa-db-ja.com

WordPressマルチサイトERR_TOO_MANY_REDIRECTSで、ドメイン名が存在しないページのパスに終わる

サブドメインで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コードが原因で発生していますか?

1
Aftab

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をハードコーディングする必要があります。

1
MrWhite

WordPressのNOBLOGREDIRECT定数が原因でした。 NOBLOGREDIRECTwww.example.comとして定義したので、そのURLが存在しない場合は、https://www.example.com/www.example.comにリダイレクトします。

NOBLOGREDIRECTwww.example.comからhttps://www.example.comに変更し、現在はホームページにリダイレクトしています。

1
Aftab