複数(PHP / metaタグ / htaccess)の方法で301リダイレクト
2024/02/25
サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題なかったけど、変えただけだと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
関連記事
-
-
htaccessファイルにてVPS⇔レンタルサーバ間のリバースプロキシ設定を行う方法
VPSの指定したディレクトリにアクセスした場合、レンタルサーバの指定したディレク ...
-
-
.htaccessでURLの末尾のphpという拡張子が無い場合でもページを表示させる方法
「/hoge/test.php」のようなディレクトリ・ファイル名の場合は「htt ...
-
-
htaccessファイルにて特定のIPの場合のみBasic認証無し、その他の場合はBasic認証有りにする方法
開発中の環境で指定したIPからのアクセスはBasic認証無しに、それ以外のアクセ ...
-
-
アクセスしてきたURLをRewriteRuleで書き換えたい
「http://aaa.com/a」というURLを叩いた際に「http://aa ...
-
-
htaccessを置いてあるフォルダのファイルを参照
曖昧だけどhtaccessでベーシック認証とかIP制限かかってる フォルダ内のプ ...