LoginSignup
1
0

sphinxで生成したhtmlファイルに、検索エンジンから検索されないようにするためmetaタグを追加する

Last updated at Posted at 2024-04-01

環境

  • Python 3.12.1
  • sphinx 7.2.6

やりたいこと

sphinxでHTMLを生成しています。
生成したHTMLはインターネット上に公開していて、誰でもアクセスできる状態です。
しかし、検索エンジンからは検索されないようにしたいです。

現在の状態

$ tree
.
├── Makefile
├── _build
├── _static
├── _templates
├── conf.py
└── index.rst
conf.py
project = 'test'
copyright = '2024, yuji38kwmt'
author = 'yuji38kwmt'

extensions = []

templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']

html_theme = 'alabaster'
html_static_path = ['_static']
index.rst
================================
test
================================

以下のコマンドでHTMLが生成されます。

$ make html

生成されたHTMLファイルのheadタグの中身です(フォーマット済)。

_build/html/index.htmlのheadタグ
<head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <meta name="viewport" content="width=device-width, initial-scale=1" />
   <title>test &#8212; test  documentation</title>
   <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d1102ebc" />
   <link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=12dfc556" />
   <script src="_static/documentation_options.js?v=5929fcd5"></script>
   <script src="_static/doctools.js?v=888ff710"></script>
   <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
   <link rel="index" title="Index" href="genindex.html" />
   <link rel="search" title="Search" href="search.html" />
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
</head>

やったこと

検索エンジンから検索されないようにするには、以下のmetaタグを追加する必要があります。

<meta name="googlebot" content="noindex">

shpinx テンプレートを作成するという記事を参考にして、_templateディレクトリに以下のlayout.htmlを作成して対応しました。

_template/layout.html
{% extends "!layout.html" %}
{% block extrahead %}
{# 検索エンジンの検索結果に表示されないようにする #}
<meta name="robots" content="noindex" />
{% endblock extrahead %}

{% extends "!layout.html" %}の意味は、以下の通りです。

"!"を継承するテンプレート名につける事で、ユーザが用意したテンプレートを継承元として参照する事になります。
ユーザが用意したテンプレートとは、"conf.py"の templates_path で設定されているパスに配置されているものです。ドキュメントに使用されるテンプレートは以下の順番で探索されます。

選択しているテーマalabasterextraheadブロックは、以下のコードで定義されています。

_template/layout.htmlは、alabasterテーマのextraheadブロックの最後に<meta name="robots" content="noindex" />を追加しているだけです。

make htmlでHTMLファイルを生成すると、headタグの中身は以下のようになりました。

<head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <meta name="viewport" content="width=device-width, initial-scale=1" />
   <title>test &#8212; test  documentation</title>
   <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d1102ebc" />
   <link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=12dfc556" />
   <script src="_static/documentation_options.js?v=5929fcd5"></script>
   <script src="_static/doctools.js?v=888ff710"></script>
   <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
   <link rel="index" title="Index" href="genindex.html" />
   <link rel="search" title="Search" href="search.html" />
   <meta name="robots" content="noindex" />
</head>

期待通り、headタグの最後に<meta name="robots" content="noindex" />が追加されました。

補足: 特定のページのみ検索されないようにする

metaディレクティブを使えば、特定のページのみ検索されないようにできます。

test2.rst
================================
test2
================================


.. meta::
   :googlebot: noindex

生成された_build/html/test2.htmlのheadタグの中身です。

_build/html/test2.html
<head>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <meta name="viewport" content="width=device-width, initial-scale=1" />
   <meta content="noindex" name="googlebot" />
   <title>test2 &#8212; test  documentation</title>
   <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d1102ebc" />
   <link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=12dfc556" />
   <script src="_static/documentation_options.js?v=5929fcd5"></script>
   <script src="_static/doctools.js?v=888ff710"></script>
   <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
   <link rel="index" title="Index" href="genindex.html" />
   <link rel="search" title="Search" href="search.html" />
   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
</head>
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0