きっかけ
お客様から、サイトの閉鎖にともなうリダイレクトの設定の要望があった。
要件は閉鎖するサイトAのすべてのページへのアクセスをサイトBのトップページにリダイレクトする。というもの。
ただし、これには隠れ要件があって、一部のディレクトリへのアクセスを除外しなくてはいけない。
サーバ周り初心者の私にはこれが結構曲者でした。
まずは
.htaccessを使ったリダイレクトは該当サイトで結構やっていて、「まあ今回も RedirectMatch ~ って書けばいけるやろ」と思っていた。最初は。
なので、該当ディレクトリ直下の.htacccessにこんな感じに書いてみたものの、思うように動作しない。
RewriteCond %{REQUEST_URI} !(^/除外するディレクトリパス/)
RedirectMatch permanent ^(.*)$ https://testsite/
リダイレクト自体は成功しているものの、除外条件がうまく動作せず、すべてのアクセスがサイトBにリダイレクトされてしまう。
色々試行錯誤してみたものの、何回試してもRewriteCondがうまく働いてないっぽい。
そもそもこれ本当にリダイレクトになってる????
…大変疑わしくなってきた。
そこで該当ディレクトリ直下の.htacccessには最終的にこんな形で冒頭部に追記。
なんとかかんとか要望通りの挙動を実現することができました。
RewriteEngine On
RewriteCond %{REQUEST_URI} !(^/除外するディレクトリパス/)
RewriteRule ^(.*)$ https://testsite/ [R=302,L]
参考
https://www.javadrive.jp/apache/htaccess/index4.html#section1_4