サイトの移転や構成が変わるとリダイレクトが必要になります。リダイレクトするときに301リダイレクトを.htaccessに記載します。
先日、意図しないリダイレクトが行われてしまい初歩的な部分で躓いたので、メモしておこうと思います。
301リダイレクトの移転元の指定
faq.htmlというファイルを、/faqにリダイレクトさせるために、次のように.htaccessを記入しました。
ところが、*faq.htmlというファイルがすべて対象になってしまい、faq.html以外のファイルもリダイレクトされるようになってしまいました。
ダメな例:faq.html以外もリダイレクトされる
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule faq.html$ http://xxxxx-care.jp/faq/ [R=301,L]
先頭にキャレット”^”をつけることで文字列をfaq.htmlだけに限定することができます。
そのように変更することで、意図したリダイレクトが行われるようになりました。
正しい例:faq.htmlだけをリダイレクトする
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^faq.html$ http://xxxxx-care.jp/faq/ [R=301,L]
まとめ
検索してそれっぽい結果を見つけて、コピペして、意図通りの動きを下という確認だけだと、それ以外に影響がないことの確認が難しくなります。
そもそも、検索⇒コピペというワークフローだとそもそもエラーケースを想定していないので検証するのがとても難しい時代になってきているなというのを感じました。