YouTube | Facebook | X(Twitter) | RSS

WING (AFFINGER5)のAMP対応で分割ページのURLがGoogle Search Consoleで404エラーになる問題の修正

2018/10/1 (月)

はじめに

WING (AFFINGER5) テーマは AMP に対応しており、以下の項目でチェックを設定することで有効化できます。

WordPress 管理 → [AFFINGER5 管理] → [投稿・固定記事] → [AMP対応]

当サイトはパーマリンク設定を以下のように設定しています。

カスタム構造 /blog/%year%/%monthnum%/%day%/p%post_id%/

WordPress ではページネーション (pagination) というページ分割機能があります。1つの記事が長くなった際にページを分割する機能です。たとえばこのページです。

上記で [次のページへ] をクリックすると URL が遷移して次のページとして表示されます。その URL は

/blog/XXXX/
/blog/XXXX/2/

となるのですが、AMP で表示すると

/blog/XXXX/amp/
/blog/XXXX/amp/2/

のように、/amp/ の後ろにページ番号が付与されます。

これだと配信している sitemap.xml の関係か、Google Search Console で該当ページが見つからない 404エラーが出るようになります。

Google Search Console AMP エラー (404)

Google では以下のようにあるべきのようです。

/blog/XXXX/amp/
/blog/XXXX/2/amp/

そこで、回避方法を考えました。

  1. AMP の2ページ目以降を ~/pXXXX/2/amp/ と出力できるようにテーマを修正
  2. ~/pXXXX/amp/2/ を ~/pXXXX/2/amp/ に転送するようにテーマを修正

1.の方が圧倒的にスマートなのですが対処方法が解決できなかったので、2.案で対処することにしました。

回避方法

1.WING (AFFINGER5) のテーマ、もしくは子テーマにある function.php に以下を追記します。

// AMP のページネーション対策
// パーマリンク設定:/blog/%year%/%monthnum%/%day%/p%post_id%/ の場合
if ( ! function_exists( 'amp_init_custom' ) ) {
	function amp_init_custom() {
		add_rewrite_rule('^blog/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/p([0-9]+)/([0-9]+)/amp?(/(.*))?/?$',
				 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&p=$matches[4]&page=$matches[5]&=$matches[8]&=1',
				 'top');
	}
}
add_action( 'init', 'amp_init_custom' );

2.テーマを更新し、[WordPress 管理画面] → [設定] → [パーマリンク設定] ページを開き [設定を保存] ボタンをクリックします。

add_rewrite_rule() 関数は WordPress に追加でリライトルールを指定するもので、第1引数に元の URL、第2引数に転送先 URL を示します。パーマリンク設定によって add_rewrite_rule 関数の第1引数、第2引数のインデックス番号が変わってきますので適宜修正してください。AFFINGER5 テーマ ファイル内の funcitons-amp.php にadd_rewrite_rule 関数の呼び出しが書かれているのですが直接終了するとテーマのアップデート時に支障が出ると考え別途呼び出しするように記述しました。

更新後にページの修正確認のリクエストを送信し、翌日エラー ステータスは解消されました。

Google Search Console AMP エラー (404) 解消

Rewrite Rule の一覧を確認する方法

以下のプラグインをインストールすることで、どのような Rewrite Rule が組み込まれているか取得することができます。ここで amp ページの Rewrite Rule を確認し、文字列を修正して対処しました。

ひとまずこれでエラーの発生は解消できましたが、あまりスマートな方法に見えません。ぜひ本家テーマで「1.」に対応できるよう修正していただけるとありがたいです。

  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-Web
-, ,