はじめに
サブドメインで運用していた Gatsby で作成しているこのブログを Google Adsence に登録しようとしたときに、いくつか手順を踏まないと上手くいかなかったので今回はその解決方法を書いていきます。
ちなみにこのブログは GitHub Actions を使用して自動デプロイするようにしていますが、サーバは Xserver で運用されています。
審査は元のドメインでする必要がある
Google Adsence にサブドメインを登録しようとするとエラーになって先に進めません。
そのため、この画面では元のドメインを登録する必要が あります。
そして審査をする前に 301 リダイレクトの設定をして、元のドメインのアクセスがサブドメインに向くようにする必要があります。
サイトの審査
元のドメインを登録すると Google Adsence に審査を出す前の確認画面が開きます。
ここでは指定されたタグをhead
タグ内に設置し、コードを設置しましたのチェックボックスにチェックを入れ、確認ボタンを押すと正しくアクセスできれば審査が進みます。
この確認ボタンを押す前に 301 リダイレクト設定をしておく必要があります。
301 リダイレクトの設定
Xserver の管理画面にログインし、サイト転送設定から指定した場合はリダイレクトの無限ループが発生してしまいました。
このとき.htaccess
は以下のようになっていました。
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_AllCacheMode
# ↓管理パネルの操作で追加された設定
Redirect permanent / https://blog.hn-pgtech.com/
この設定では元のドメインhn-pgtech.com
からサブドメインblog.hn-pgtech.com
にリダイレクトされる設定ですが、blog.hn-pgtech.com
へのリクエストもリダイレクトの対象となってしまい無限ループしてしまいました。
この事象を解決するために.htaccess
を以下のように修正します。これは、ssh 接続で修正しても管理画面から編集してもどちらでも 構いません。
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_AllCacheMode
- Redirect permanent / https://blog.hn-pgtech.com/
+ # リダイレクト設定を追加
+ RewriteEngine On # URL書き換えモジュールを有効
+ RewriteBase / # ベースURLを設定
+ RewriteCond %{HTTP_HOST} ^hn-pgtech\.com$ [NC] # ホスト名が「hn-pgtech.com」である場合にのみルールを適用([NC]は大文字小文字を区別しない)
+ RewriteRule ^(.*)$ https://blog.hn-pgtech.com/$1 [R=301,L] # すべてのリクエストをhttps://blog.hn-pgtech.com/に301リダイレクトする
ここではアクセス元の URL がhn-pgtech.com
の場合にのみblog.hn-pgtech.com
へのリダイレクトを行い、無限ループされないような設定にしています。
ここまでレンタルサーバ側で設定できていれば、AdSense のコードが適切に設定されていれば問題ないはずです。
AdSense のコードは、Gatsby Head API の設定ができていれば SEO コンポーネントに追加するだけで OK です。
import * as React from 'react';
import PropTypes from 'prop-types';
import { useStaticQuery, graphql } from 'gatsby';
import defaultImage from '../images/ogp.png';
const Seo = ({ description = '', meta = [], title, img, location, type, date, modified }) => {
// 省略
return (
<>
// 省略
// 追加
<script
async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-xxxxxxxxxxxxxxxx"
crossorigin="anonymous"
/>
</>
);
};
Seo.propTypes = {
// 省略
};
export default Seo;
Gatsby Head API の実装方法は以下の記事を参考にしてください。
ここまで設定できていれば審査を要求すれば審査中のステータスになるはずです。