よく見られていた記事を消したあとの URL:近い記事へ 301 で転送する

機能追加
広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

検索からいちばん見られていた記事が、ゴミ箱に入ったままになっていて、410(もうない)を返していました。

見られていた理由そのものが、直したいところだったため、戻さずに、近い内容の記事へ 301 で転送することにしました。

この記事では、記事を消したあとの URL の扱い方と、テーマで転送を設定したときのことをまとめます。

消した記事の URL の扱い方は 3 つ

扱い 検索からの人 / 向いているとき
404・410 のまま 検索からの人:「ページがありません」を見て帰る向いているとき:見に来る人がほとんどいない
記事を戻して直す 検索からの人:直した記事を見る向いているとき:直しても、見に来る理由が残る
近い記事へ 301 で転送 検索からの人:近い内容の記事を見る向いているとき:見に来る人がいて、戻せない理由がある

今回は、記事が見られていた理由そのものが、直したいところと同じでした。

直すと見に来る理由がなくなるため、近いデザインの記事へ転送しました。

転送先の選び方

  • 検索から来た人が「近い」と感じる記事にする(今回は色と仕上げが同じ記事)
  • 一覧のページより、1 つの記事のほうが、探していたものに近い
  • 転送先が 200 で開くこと・同じ URL の記事がほかにないことをチェックする

テーマで転送を設定する

前に、まとめた記事の URL を転送する仕組みをテーマに追加していたので、その一覧に 1 行足しました。

function mytheme_redirects() {
	return array(
		'/archives/(元の記事)' => '/archives/(転送先の記事)',
	);
}

function mytheme_redirect_removed() {
	if ( ! is_404() ) {
		return;
	}
	$path = (string) wp_parse_url( isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '', PHP_URL_PATH );
	$path = untrailingslashit( $path );
	$map  = mytheme_redirects();
	if ( isset( $map[ $path ] ) ) {
		wp_safe_redirect( home_url( $map[ $path ] ), 301 );
		exit;
	}
}
add_action( 'template_redirect', 'mytheme_redirect_removed', 0 );
  • WordPress が 404 と決めたときだけ動く。公開中のページには触らない
  • このサイトには、消した記事に 410 を返す処理も入っている。410 の処理が先に状態の番号を付けても、あとから 301 で上書きされるので、両方とも動く
  • 転送の一覧に、なぜ転送したかをコメントで残す

確認したこと

URL 結果
元の記事 301 で転送先へ
転送先 200
ほかの消した記事 410 のまま
前に設定した転送 301 のまま

まとめ

  • 記事を消すときは、その URL にどれだけ人が来ているかを先に見る
  • 戻せない理由があるときは、近い内容の記事へ 301 で転送する
  • 転送はテーマの一覧で管理し、理由をコメントで残しておく

SiteBeacon(サイトビーコン)

サイトが止まったら、すぐに気づける。

ホームページを 5 分ごとにチェックして、止まったとき・エラーが出たとき・SSL やドメインの期限が近いときに、メールでお知らせします。2 サイトまでは、ずっと無料で使えます。

SiteBeacon を見る サイトを直す相談をする

監視で気づいたあとの直す作業も、同じ担当がお受けします。