【.htaccess】古いURLから
新しいURLへ自動転送する方法
ウェブサイトを運営していると、ファイル名やフォルダ名を変更したくなったり、別のフォルダへ移動したくなったりして、ページのURLが変わってしまう事があります。
そこで必ず実装したいのがリダイレクト設定!
リダイレクト設定をしておくと、古いページURLへのアクセスがあった場合に、新しいページURLへ自動転送してくれます。
ここでは「.htaccessファイル」でリダイレクトを設定する方法を見ていきます。
とても簡単に実装できますよ!
ページのURLが変わるとどうなるの?
公開しているページのURLを変更すると、検索結果に表示するためのインデックスもやり直しになります。
検索結果に表示されるURLが新しいページURLに切り替わるまで、数ヶ月から1年以上かかることもあるそうです。
それまでは古いURLが検索結果に表示されるので、もしクリックされても404エラーページ(このページは存在しません)となってしまいます。
これではせっかく興味を持ってくれたユーザーにも不親切ですし、機会損失にもなってしまいます。
そこで、管理の都合でやむなくページURLを変更する場合は、リダイレクト設定をしておきます。
リダイレクト設定をすると、古いURLにアクセスがあったとき、新しいURLへ自動転送(リダイレクト)できるので、アクセスしてくれたユーザーに新しいURLページを表示することが出来ます。
301リダイレクトと302リダイレクト
リダイレクトには、完全にURLを変更した時に使う「301リダイレクト」と、一時的にページURLを変更した時に使う「302リダイレクト」があります。
どちらも自動転送の指定ですが、使い所が微妙に違います。
「301リダイレクト」は、以前はこうだったけど、これからはこっち!と、言わばページURLのお引越しを伝えるイメージです。
「301リダイレクト」設定をすることで、古いURLのページの評価を新しいURLへ引き継ぐ事ができ、クローラーにもURLが新しくなった事を知らせる事ができます。
「302リダイレクト」は、サイトメンテナンスなどで一時的にURLを変更する場合など、あとあと元のページURLへ戻す予定がある場合に使います。
今回はページURLのお引越し、「301リダイレクト」の書き方を見ていきます。
今回の「.htaccessファイル」でのリダイレクト設定では、
①「.htaccessファイル」を作成して、
②「.htaccessファイル」にリダイレクト設定を書き、
③「.htaccessファイル」をドメイン直下に設置します。
はじめて「.htaccessファイル」を作る場合や、「ドメイン直下」ってどこ? と思うときは、こちらも参考にしてみてください。
301リダイレクトの書き方
早速「301リダイレクト」設定の書き方を見ていきましょう。
1ページのリダイレクト設定は、たった1行で実装できます。
「Redirect 301 旧UR 新URL」といった記述形式で書いていきます。
先頭の「Redirect 301 」は、301リダイレクト設定ですよ、という宣言で、旧URLにアクセスがあった場合は、新URLへ転送してください、という指示になります。
「Redirect□301□旧UR□新URL」といったように、3ヵ所に半角スペースが必要なので、忘れないように注意しましょう!
ここでは、test1というフォルダにあったsample.htmlというファイルを、test2というフォルダに移し替えた場合を例に見ていきます。
Redirect 301 /test1/sample.html https://ドメイン.com/test2/sample.html
旧URL(青い部分)は「.htaccess」ファイルから見た相対パスで。
新URL(黄色の部分)は「https://」からはじまる絶対パスで指定します。
※サイトをSLL化していない場合は「http://」になります。
複数のページをリダイレクトしたい場合は、全てのページ分、リダイレクト設定を書いていきます。
記述できたら、「.htaccess」ファイルをドメイン直下(「ドメイン.com/.htaccess」となる場所)にアップロードすればOKです。
301リダイレクト余談
リダイレクトの書き方にはいくつかの書式があり、書き方とサーバーの相性によっては動かないこともあります。
今回紹介した書き方は幅広いサーバーで動くとされている書き方で、私も4種類ほど試したのですが、実際に動いたのはこの書き方だけでした。
ページURLを変更した時は、忘れずにリダイレクト設定をして、新しいページURLをすぐに読んでもらえるようにしましょう!