apacheのリダイレクトが設定しきれてなかった件
apacheにリダイレクトの設定を書いてみた - helen's blog
先回でapacheのリダイレクトの設定を書き換えたのですが
落とし穴に見事にはまっていました。
# /hoge/ を /new_hoge/ にリダイレクトしたい RewriteRule ^/hoge/$ /new_hoge/ [R=301,L]
ですが実はこのURL
が存在していたため、上記の設定だと
直接 /new_hoge/1/detail/ にアクセスすると404エラーになります。
そのため正規表現で書き直し
RewriteRule ^/hoge/(.*)$ /new_hoge/$1 [R=301,L]
/hoge/の後ろにあるものを(.*)にまとめ$1に入れます。
これで /new_hoge/1/detail/にも対応できるようになりました。
ちなみに
L とは
RewriteRule ^/hoge/(.*)$ /new_hoge/$1 [R=301,L]
条件にマッチした場合そこで判定を終了する(以下に続くRewriteRuleを評価しない)
その他正規表現
.* は()でくくられていないと破棄される
RewriteRule ^/hoge/.*/(.*)$ /new_hoge/$1 [R=301,L]
変数を2つ使う
RewriteRule ^/hoge/([0-9]{4})/([a-z]*)$ /new_hoge/$1/$2 [R=301,L] ([0-9]{4})/([a-z]*)\.html /newblog/$1/$2.shtml
参考:mod_rewriteまとめ(2)mod_rewriteで使う正規表現
関係ないけど
就活生の採用の面談中にこのバグ報告が飛んできてビビりました。