WordPress検索エンジンにインデックスさせない方法

最終更新日

WerdPressやWebサイトの構築初期、Googleや他の検索エンジンにインデックス(検索一覧に表示させたくない)されたくない場合があります。そんな時のために、wordpressの設定及びBASIC認証で拒否する方法を記載しています。逆に検索エンジンにインデックスされない要因にもなります。

サイト全体でnoindexにする

wordpress設定

wordpressのダッシュボード→設定→表示設定で「検索エンジンがサイトをインデックスしないようにする」のチェックを付けます。

<meta name='robots' content='noindex, nofollow' />

実際、ブログサイト上で右クリックの「ページのソースを表示する」をクリックでソースを見てみます。

noindex,nofollowが設定されています。

noindexとは

検索ページページが表示されなくなります。これはGoogleでもnoindexを使用するように推奨しています。

nofollowとは

Googleがクロールした際に、ページ上のリンクを辿ることを防止します。リンク先がGoogleの評価をさげる場合、制御するために使用することが多いようです。

ただし、WordPressで設定しても検索エンジンが無視してインデックスする場合があるので、完全にインデックスを拒否することはできません。

上記方法で防げないことも・・・

googleいわく、以下のことを言っています。
重要: noindex ディレクティブが有効に機能するようにするために、robots.txt ファイルでページをブロックしないでください。ページが robots.txt ファイルでブロックされると、クローラは noindex ディレクティブを認識しません。そのため、たとえば他のページからリンクされていると、ページは検索結果に引き続き表示される可能性があります。

BASIC認証でブロック

Webサーバーの機能で、ディレクトリやファイルに対してアクセス制御する機能を使用してクローラーをブロックします。下記のスクショにあるようにサイトにアクセスしたときにユーザーIDとパスワードを求める簡易ログイン機能付きサイトになります。

basic認証

wordpressに以下の2つのファイルを設置します。

  • .htpasswd
  • .htaccess

WordPressの場合は、.htaccessが最初から作成されているのでファイルを編集します。

.htaccess

編集する際、wordpressは注意が必要になります。「EGIN WordPress」~「END WordPress」の間の行は、wordpressが動的に変更する可能性があるので、書き換えてはいけない。

.htaccessバックアップをすることをお勧めする。記述方法を間違うとサイトにアクセスできなくなります。(httpステータス:500エラー発生)

以下、サンプルコード

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。

# END WordPress
AuthUserFile /var/www/html/サイト名/.htpasswd
AuthGroupFile /dev/null
AuthName "Password required"
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

解説

AuthUserfile /サイト名/.htpasswd.htpasswdが設置されているパス
※wordpress直下
AuthGroupfile /dev/nullグループごとにアクセスを許可する。グループが存在しない場合は
「/dev/null」を指定
AuthName “Please enter your ID and password”ダイアログに表示する文章。
※日本語の場合は文字化けを起こす。
AuthType BasicAuthTypeを指定。「Basic(ベーシック認証)」と「Digest(ダイジェスト認証)」の2種類がある。
require valid-user入力したIDとパスワードが合っていれば誰でもアクセス可

プラグインを使用した「.htaccess」及「.htpasswd」自動生成

「WP htpasswd」プラグインは、ユーザー名とパスワードを入力するだけで「.htaccess」及「.htpasswd」を自動生成してくれる。非常に簡単にログイン機能が実装できる。

キーワードをセットして検索を行い、「今すぐインストール」ボタンを押下する。

インストール後は、有効化します。

wordpressから直接「.htaccess」ファイルを編集することができる。また、バックアップ機能もあります。非常にシンプルなエディタです。

usernameとpasswordを入力して、「Check me for enable htpasswd protection.」チェックします。以上でBASIC認証サイトが作成できます。

.htpasswd

ユーザIDやパスワードを記述方法で記述し.htaccessと合わせて利用することによってアクセス制限をかける為のファイルのこと。※ファイル名は変更可能だが慣習的に「.htaccess」を使用する。

admin:$apr1$VmJygFAe$1oU/Sb4PjSA78SNzOw56h0

パスワード生成方法

.htaccessのパスワードはハッシュ化する必要があるので、「.htaccess パスワード」などで検索して生成サイトで生成します。1つサイトを紹介しておきます。
ハッシュのアルゴリズムは、crypt、MD5、bcrypt(Blowfish)等あるがWebサーバーによる。MD5あたりでハッシュ化しておけば大抵は大丈夫かと思う。

WP Htaccess File Editorプラグイン

wordpressから.htaccessファイルの内容確認及び編集するのに、「WP Htaccess File Editor」プラグインをインストールしておくと便利です。

500 Internal Server Error

.htaccessの記述が間違っていることが多い。

BASIC認証が使用できないケース

BASIC認証はWordPressやhtml,PHP等の機能ではなく、Webサーバー(Apache等)が提供している機能です。Apacheの設定によっては有効にしていないケースがあるので、次の手順で確認及び設定変更をする。ただし、この作業はサーバー管理者の作業のため環境によってはできないこともある。

/etc/httpd/conf/httpd.conf or /etc/httpd/conf.d/xxxx.conf(1つのapacheでいつくもサイト運営している場合はこちら)

Apacheで無効にしているケース

<Directory "/var/www/html/aizomex" >
   AllowOverride None
</Directory>

有効に設定変更する。

Apache

<Directory "/var/www/html/aizomex" >
  Allowoverride All
</Directory>

apacheの再起動及びapachectl graceful実行する。