見出し画像

CocoonでAMPをやめるときのリダイレクトが効かない。動いたコード紹介

CocoonのAMPをやめる方法

基本的なやり方は公式、

を見ればOKです。

問題は、AMPページを削除したあとに、
ある程度、AMPのページURLにアクセスが来ると見込まれることです。

そのアクセスもったいない
とか
「AMPないよ」と早くGoogleに知らせよう
という目的で301リダイレクトなる設定します。

AMPのURLにアクセスが来たら、非AMPのページへ転送する設定です。


CocoonのAMPをやめる際のリダイレクト失敗

サーバー上にある.htaccessというファイルへ、
コードを追記することでリダイレクトできます。

このコードをググったのですが、自サイトの場合、
すべてトップページにリダイレクトされてしまう現象が発生。

(記事AのAMPページへのアクセスは、
非AMPの記事Aへリダイレクトされてほしい)

自サイトのURLの末尾を見ると、
・トップページ:?amp=1
・各記事:&amp=1
となってまして、多分これがあやしい。

記事URLを
「domain.com/name/」
とかでなく、
domain.com/?p=100」
とかにしてるとこうなる?ような気がしました。
が、確認していません。


CocoonのAMPをやめる際のリダイレクトコード

ともあれ自分の環境で動いたコードが

#discontinue AMP Redirect

RewriteCond %{QUERY_STRING} (^|&)p=(\d+)&amp=1(&|$)
RewriteRule ^$ https://yourdomain.com/?p=%2 [R=301,L]

RewriteCond %{QUERY_STRING} (^|&)amp=1(&|$)
RewriteCond %{QUERY_STRING} !p=([\d]+)&amp=1
RewriteRule ^$ https://yourdomain.com/? [R=301,L]

です。
AIを詰めまくって出力させました。

上段は、各ページのリダイレクト。
下段は、トップページのリダイレクト
と分かれています。

下段の2行目は
「各ページはトップにリダイレクトさせない」
という意味の行で、これがないとやはり
すべてトップへリダイレクトされます。

この記事が気に入ったらサポートをしてみませんか?