勉強したことのメモ

webプログラマが勉強したことのメモ。

複数の方法で301リダイレクト

   

サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題なかったけど、変えただけだとSEO的にダメで301リダイレクトさせないといけないとどこかで聞いた覚えがある。そもそもどうやって301リダイレクトさせるのか知らなかったので以下にメモ。

 

htaccessを使う

これが無難っぽい。以下のように記述する。

RewriteEngine On
RewriteBase /

RewriteRule ^変更前のパス 変更後のパス [R=301,L]

#例
RewriteRule ^old.html /new/new.html [R=301,L]

#変更前に「id.html」でid部分が変動し、それをクエリとして飛ばす場合
RewriteRule ^(.*).html /new/?id=$1 [R=301,L]

 

PHPを使う

htaccessが無理な場合はPHPから301リダイレクトさせる。以下の通り。

header('HTTP/1.1 301 Moved Permanently');
header('Location:new.php');
exit();

 

metaタグを使う

htaccessもPHPも無理な場合はmetaタグを使う。ただ、これは非推奨となっている為、どうしようもないケースのみ利用する。記述方法は以下の通り。

<meta name="refresh" content="0;http://hoge.com/new.php">

 

301リダイレクトとは

そもそも301リダイレクトのちゃんとした意味は分かっていなかった。調べたところ「恒久的な転送」というもので、恒久的とは「いつまでもその状態が続くさま」という意味らしい。

この設定をしておくことで検索エンジンからの評価を引き継ぐことができる。逆に言うと設定していないと1からの評価になるっぽい。

 

ついでに403,404リダイレクトも

403及び404リダイレクトは以下の通りhtaccessに記述する。

# 403設定
ErrorDocument 403 /hoge/404.php

# 404設定
ErrorDocument 404 /hoge/403.php

 

 - PHP, htaccess

  関連記事

ファイルの更新日付取得とリネーム

やりたかった事は、画像ファイルの更新日時取得と リネーム。 ■参考サイト htt ...

カンマ区切りの文字列で最後のカンマを排除

文字列をカンマ区切りにして、カンマを取り外して 配列にする際、頭もしくはお尻につ ...

アクセスしてきたURLをRewriteRuleで書き換えたい

「http://aaa.com/a」というURLを叩いた際に「http://aa ...

PHPでCSVファイルを作って開くと「SYLKファイルが云々」のアラートが出た

データベースのログを整形してCSVファイルを生成し、ダウンロード及びエクセルで開 ...

Shift_JISでカタカナのソを出力するとエラー

先に結論として5C問題とかいうみたいで仕様らしい。 ■参考サイト http:// ...

PHPでフォームの禁止ワード制限

掲示板等で本文を送信する際に、禁止ワードが含まれていないかチェックするプログラム ...

PHPからredisを利用する

もうちょっと 突っ込んで触ってみる。   【接続と終了】 $redis ...

PHPで配列データをCSVとしてダウンロードさせる方法

PHPでログ的なデータをCSV化したかった。ただ、複数の人間が使うのでCSVファ ...

PHPのcURLでnot found判別方法

cURLを使う際に、 if( curl_exec($ch) ){ //succe ...

PHPとajaxでチャットの作成

■ソース ・index.php <? error_reporting(E_ ...