RedirectMatch
これはmod_aliasであり、mod_rewriteではないことに注意してください。両方からのディレクティブが同じURIに適用される場合、2つのモジュールは常に互いにうまく機能するとは限りません。サイトがどのように設定されているかわからない場合、質問に答える方法はありませんが、*mod_rewrite*を使用して次のようなことを試すことができます。
RewriteEngine On
# Check that the request isn't for an existing resource
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Check that the request isn't for the new store
RewriteCond %{REQUEST_URI} !^/newstore
# redirect to the new store
RewriteRule ^ /newstore/ [L,R]
ここでの理由は、リクエストが既存のページ、画像、スクリプト、404になる可能性のあるものに対するものではなく、リクエストが/newstore
フォルダ内の動的サイトに対するものでない場合は、リダイレクトするためです。/newstore/
フォルダに。
しかし、私が言ったように、200個のRedirectMatch
ディレクティブがあり、mod_aliasはmod_rewriteで常にうまく機能するとは限りません。それらすべてを書き換えルールに変換する必要があるかもしれませんが、おそらく必要ではありません。例:
RedirectMatch 301 ^/old-path/old-page.html$ /newstore/?page=123
次のように翻訳されます:
RewriteRule ^/old-path/old-page.html$ /newstore/?page=123 [L,QSA,R=301]
これらの書き換えルールはすべて、**すべての404を/newstore*にリダイレクトする上記のルールの前にある必要があります。これは最後の手段のような「キャッチオール」ルールであるため、通常のリダイレクトをすべて実行する必要があります。