私のサイトでは、ショッピングカートは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/
にリダイレクトします。
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(永続)に変更します-それが意図の場合-正常に動作していることを確認した場合のみ。これは、潜在的なキャッシュの問題を回避するためです。
ベースをサブフォルダにリダイレクトするだけなので、リダイレクトルールや条件を使用する必要はありません。したがって、サブフォルダもリンクされている場合、リダイレクトは必要ありません。
/.htaccess
ファイルでこのようなことを試してください:
Redirect 301 / https://example.com/zc2/
それからあなたの/WordPress/.htaccess
ファイルに:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /WordPress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress