ページからページへの引っ越しは絶対301リダイレクト。Meta Refreshは使うな!?

ページからページへのリダイレクト

最近ミスが多いんですよね・・・

またも、やらかしてしまった・・・

リダイレクト

そうです。

件名の通り、ページの引っ越しをhtaccessを使ったリダイレクトではなく、Meta reflesh=0秒でやってしまったんです。

その結果、トンデモないことに。

さくらインターネット使っている人で、リダイレクトの書き方がわからない人、ご参考まで。

2日で1位から圏外に吹き飛ばされる

該当ページは古く、いちいちHTMLを編集するのが面倒だったんで、ワードプレスのブログに新しくページを作ってリダイレクトしようと思ったんです。

でも、htaccessを書いてもうまく行かない・・・

いろいろ調べても、どうにもこうにもうまく行かない・・・

もう面倒だ!meta refreshでやればいいや。

「3秒とか5秒などに設定すると、離脱の恐れがあるから。」ということで0秒にしたんです。

<meta http-equiv="refresh" content="0;URL=URL">

ページは一瞬で転送されたのは良かったのですが、2日後には、検索結果からは完全に消え去ってしまいました。

長年1位をキープしていたのに、一気に左遷。

昨日まで東京でバリバリやっていた成績ナンバー1の営業マンが、2日後に日本最北端、極寒の地でクーラーの販売を命じられた感じです。

調べた結果、「0」秒でやってはいけない。といったことは特に書かれていなかったので(気づかなかっただけか・・)、「スムーズに引き継がれるだろう。」と思ったのが甘かった。

甘かった!(泣)

後の祭りだ。

サポートがまさかの・・

さくらインターネットを使っていますが、大まかなことはマニュアルに書いているんですが、、階層の深いページの書き方までは書かれていません。

そこで、サポートに連絡したら、すぐに返事は返ってくるも、まさかのサポート対象外!

イロイロな書き方があるのでご案内いたしかねます。

いたしかねます。。。。

まじかぁ・・・(・・;)

1位から圏外に吹き飛ばされたショックは大きかったので、再度チャレンジ。

簡単だった・・・リダイレクト

301リダイレクトの書き方って、サーバーによって違います。

他所の情報を参考に書いても動作しないことがあります。

今回、例えば、こんな感じのリダイレクトです。

旧ページ
https://hogehoge.hoge/blog/2013/02/hogera.html

新ページ
https://hogehoge.hoge/blog2/hogera/

htaccessの書き方はこれ↓

RewriteEngine on 
RewriteBase /www/hogehoge.hoge/blog/2013/02/
RewriteRule post_869.html "https://hogehoge.hoge/blog2/hogera/" [R=301,L]

RewriteBaseのところの書き方がポイントです。

これがイマイチわかっていなかったので、うまく行かなかったわけです。

良く調べてしっかり検証すれば良かったものを、横着したゆえ大左遷を食らったのでした。

index.htmlの場合は注意!

ディレクトリの中の「index.html」は、ファイル名で指定してリダイレクトすることが可能です。

が、「/」でアクセスされたときはリダイレクトされません。

よって、「ディレクトリのリダイレクト」を使います。

RewriteEngine On 
RewriteBase / 
RewriteRule dir1/(.*) dir2/$1 [R,L]

これは同一ディレクトリ内でディレクトリを変更する場合。

階層の違いディレクトリにリダイレクトする場合は、下記のように書くとうまく行きました。

RewriteEngine on
RewriteBase /www/netshop7/blog/estore-shopserve/
RewriteRule (.*) "https://netshop7.com/blog2/category/shopserve/" [R=301,L]

旧ブログのショップサーブに関する記事の一覧を新しいブログに転送しました。

ポイントはこれ→(.*)(「index.html」と入れてしまうと、URLにindex.htmlの文字列がある時しかリダイレクトされない。)

*はワイルドカードと言って、このディレクトリ内のいかなるファイルにアクセスがあっても、ディレクトリにアクセスがあったものとして、まとめて指定のURLに飛ばすことができます。

この書き方、マニュアルには書かれていないんですよね・・・

見つけるのに苦労しましたよ。(プログラマーじゃないんで、*とか普段つかわねーし。)

mod_rewiteの静的ページも転送可

動的なページそ擬似静的化で表示させることができるmod_rewrite。

これもリダイレクト301で転送できることを確認しました。

本来、「/index.cgi?id=hoge」このような文字列を「/hoge.html」と表示させることができます。

hoge.htmlは存在しないファイル名ですが、ちゃんとリダイレクトしてくれました。

書き方は通常のhtaccessの書き方と同じです。

ただ、、、mod_rewiteと、転送用のコマンドの共存ができないのか、両方書くとエラーが出てしまいました。

両方書ける方法調べてみても、よく分からなかので転送のみしました。

もっとも、旧ページは不要なので共存させる必要性もありませんが。

Javascritによるリダイレクト

一部のページでは諸事情があってJavascriptでリダイレクトにしています。

リダイレクトも選択肢がいろいろあって便利ですね。

<script type="text/javascript">
<!--
 setTimeout("link()", 0);
 function link(){
 location.href='https://~~~/';
 }
-->
 </script>

後の祭りにならないように

そんなわけで、ページ単位の引っ越しは、必ず301リダイレクトを使いましょう。

良く調べもせず、よく検証もせず、手を抜くと痛い目に遭うということです。

今回はブログ記事1ページが犠牲となり、meta refleshは絶対に使ってはいけないということを検証しました。

これをネット通販サイトでやってしまうと、もっとヤバイことになりますよね。

引っ越しする際は、ちゃんとリダイレクト(htaccess)の設定ができるかどうかを確認しましょう。

よく考えず引っ越しすると営業停止になります。

ABOUTこの記事をかいた人

ゆるい起業家。ECや飲食、コンサル、投資*などをいろいろやってます。座右の銘は「のらりくらり」。*マルチやネットワークではない。まっとうな投資。