よく見られていた記事を消したあとの 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 で転送する
  • 転送はテーマの一覧で管理し、理由をコメントで残しておく

関連機能

  1. Code Snippets のコードをテーマの functions.php に移す(Cannot redeclare を出さずに切り替える方法)

  2. WordPress カテゴリ選択で条件付き絞り込みが行える検索フォームを実装

  3. WordPress の管理バーの「投稿を表示」を別のタブで開く:admin_bar_menu で target=”_blank” を足す

サイドバー

よく使うカスタマイズ

最近の記事

  1. Fstyle Final Output Replacer のルールの一覧(generator タグを消す 2 つのルール)

Profile

PAGE TOP