通常のもので始まるhtaccessファイルがあります:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
次に、いくつかの書き換えがあります。
RewriteRule ^protect/?$ /Legal/Your-Financial-Protection.aspx [NC, L, R=301]
その後、rewritemap で終了します。
RewriteMap map txt:rewritemaps/map.txt [NC]
RewriteRule ^(.+)$ ${map:$1} [R=301]
rewritemap には、すべての従来の URL (現在のサイトのページと、新しいサイトの同等のページにリダイレクトされる短い URL) が含まれています (約 4k あるため、マップを実際に使用する必要があります)。
Inspiration.aspx /Inspiration.aspx
Destinations/Africa/Countries/Gabon.aspx /Destinations/Africa/Gabon.aspx
indonesia /Destinations/Southeast-Asia/Indonesia.aspx
問題は、rewritemap が有効になっている (つまり、コメントアウトされていない) 場合、すべての URL (一致しないものも含む) が / にリダイレクトされ、スタイルシート、js、画像などを含むことです。
私が求めているのは、マップ内のパターンに一致する uris が置換にリダイレクトされ、他のすべてが通過する (つまり、同じままである) ことです。
マップにデフォルトの $1 を設定してみました:
RewriteRule ^(.+)$ ${map:$1|$1} [R=301]
しかし、これはリダイレクト ループを引き起こすだけです。すべての .css、.js、.jpg などの書き換えをスキップすることもできると思いますが、使用されているファイル拡張子のリストを維持する必要はありません。
参考までに、私は HeliconTech の ISAPIRewrite を使用していますが (私は IIS 6 を使用しているため)、Apache に従って rewritemaps を処理すると主張しており、過去に問題が発生したことはありません。
どんな助けでも大歓迎です!
ありがとう、アダム