最近ミスが多いんですよね・・・
またも、やらかしてしまった・・・
そうです。
件名の通り、ページの引っ越しを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)の設定ができるかどうかを確認しましょう。
よく考えず引っ越しすると営業停止になります。