質問: / wpパスでwordpressをインストールすると、index.htmlがショッピングカートにリダイレクトされるときにリダイレクトループが発生します 私のサイトでは、ショッピングカートはexample.com/zc2にありますこの.htaccessファイルを使用しますrewriteengine on redirect /index.html example.com/zc2/ example.comに到達した人は誰でも私のショッピングカートにリダイレクトされます。すべて良好ですが、example.com/wpでwordpressをインストールしようとすると、ブラウザーがリダイレクトループでスタックします。私はそれが私の巧妙に作成された.htaccessファイルだと確信しています。これを修正するにはどうすればよいですか?
回答: rewriteengine on redirect /index.html example.com/zc2/ 脇:これはあなたの質問の「タイプミス」でなければならないが、このmod_alias redirectディレクティブは完全に無効です(ターゲットurlからプロトコルが欠落しています)-これはあなたの500内部サーバーエラーのあるサーバー-「非urlにリダイレクト」!?また、rewriteengine(mod_rewrite)とredirect(mod_alias)は、異なるapacheモジュールからの無関係なディレクティブです。 これを修正するにはどうすればよいですか? ただし、.htaccessサブディレクトリのwordpress /wpファイルの設定ミスが原因で、「リダイレクトループ」が発生する可能性があります。 /wpサブディレクトリではなく、不注意でドキュメントルートに書き戻している場合、リダイレクトループが発生します。redirectディレクティブも「prefix-matching」です。これは、で始まるソースurlと一致するurlに一致します。特定のパス(ドキュメントルートなど)をリダイレクトする場合は、代わりにredirectmatchディレクティブ(またはmod_rewrite rewriterule-後述)を使用することをお勧めします。例えば:redirectmatch 302 ^/(index\.html)?$ https://example.com/zc2/ これは/(または/index.html)のみに一致し、example.com/zc2/にリダイレクトします。代わりにmod_rewrite(rewriterule)を使用するドキュメントルート.htaccessファイル内のmod_aliasディレクティブ(redirectまたはredirectmatch)は、サブディレクトリに他の.htaccessファイルがある場合(つまり、wordpress /wp/.htaccessファイル)。ルート.htaccessファイルのredirectがwordpressインストールに干渉することを回避するには、mod_alias redirect(またはredirectmatch)を変更します。ドキュメントルート.htaccessファイルでmod_rewrite rewriteruleに代わりに。例えば:rewriteengine on rewriterule ^(index\.html)?$ https://example.com/zc2/ [r=302,l] .htaccessにあるwordpress /wp/.htaccessファイル内のmod_rewriteディレクティブは、(ドキュメントルート内の)親.htaccessファイル内のmod_rewriteディレクティブを完全にオーバーライドします。紛争の。ルート.htaccessファイルのmod_rewriteディレクティブは処理されません。(これはapacheのデフォルトの動作に依存していることに注意してください。mod_rewriteディレクティブはinheritedではありません。)mod_alias redirectが使用される場合、親.htaccessファイルのmod_aliasディレクティブは処理されます(一致するかどうかは別の問題です)-競合の可能性。example.com/にアクセスすると、example.com/zc2/へのリダイレクトが引き続き発生します。上記の302(一時)リダイレクトを使用したことに注意してください。これらを301(永続)に変更します-それが意図の場合-正常に動作していることを確認した場合のみ。これは、潜在的なキャッシュの問題を回避するためです。