ヤマムギ

growing hard days.

*

sitemap.xml(sitemap-misc.xml)とrobots.txtを設置する

   

起きたら結構な雨でしたので、とりあえずサーバのエラーログを眺めていると、googlebot.comがsitemap-misc.xmlを探しに来ていて、yahoo.netがrobots.txtを探しに来て、それぞれ「No such file or directory」になっていました。
ApacheからNginxに移行した際にこのへんの対応を何もしていなかったからですね。
なんだかgooglebotさんにもyahooさんにも申し訳ないので、それぞれちゃんとやりなおしておこうと思います。

sitemap

Nginxのエラーログを確認する。

下記はデフォルトの設定です。[Ctrl]-[C]で停止できます。

[bash]
$ sudo tail -f /var/log/nginx/error.log
[/bash]

sitemap.xml対応

WordPressなんでプラグインでやってしまいます。

Google XML Sitemapsをインストールする。

  • プラグインの追加で「Google XML Sitemaps」を検索して追加します。

  • XML Sitemap Generator for WordPress 4.0.8

http://www.yamamanx.com/sitemap.xml が作成されているはずなのに、アクセスすると、404エラーになります。

NginxでGoogle XML Sitemaps向けの設定

プラグインの設定画面を見ると「Since you are using Nginx as your web-server, please configure the following rewrite rules in case you get 404 Not Found errors for your sitemap:」と書いています。

そして下に以下のnginx.confの記述があります。

[vim]
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.xml$ “/index.php?xml_sitemap=params=$2” last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.xml.gz$ “/index.php?xml_sitemap=params=$2;zip=true” last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.html$ “/index.php?xml_sitemap=params=$2;html=true” last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.html.gz$ “/index.php?xml_sitemap=params=$2;html=true;zip=true” last;
[/vim]

これをどこに追加するべきか、少し悩んだというか、最初に「location / {}」の中に追加したら全然だめでした。
で、WordPress.orgフォーラムのGoogle XML Sitemaps[resolved] 4.0 is broken in FPM/FastCGI serversに、「location / {}」の外に追記している情報があったので、そのようにしてNginxを再起動して無事アクセス出来るようになりました。

  • サーバーのconfファイルを編集

[bash]
$ sudo vim /etc/nginx/conf.d/mydomain.conf
[/bash]

  • mydomain.conf
    ※ちなみに途中のincludeはW3TCの自動生成confファイル。

[vim]
server {
listen 80;
server_name mydomain.com www.mydomain.com;
root /usr/share/nginx/mydomain;

     include /usr/share/nginx/mydomain/nginx.conf;

     location / {
         index index.php index.html;
         try_files $uri $uri/ /index.php;

         if (!-e $request_filename) {
           rewrite ^.+?(/wp-.) $1 last;
           rewrite ^.+?(/.
.php)$ $1 last;
           rewrite ^ /index.php last;
         }
     }

     location ~ .php$ {
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.php;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
     }

     rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.xml$ “/index.php?xml_sitemap=params=$2” last;
     rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.xml.gz$ “/index.php?xml_sitemap=params=$2;zip=true” last;
     rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.html$ “/index.php?xml_sitemap=params=$2;html=true” last;
     rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?.html.gz$ “/index.php?xml_sitemap=params=$2;html=true;zip=true” last;
}
[/vim]

  • Nginx再起動

[bash]
$ sudo service nginx restart
[/bash]

yamamanx-sitemap

実際のサイトマップXMLです

Google ウェブマスターツールに追加する

ウェブマスターツールにログインして、[クロール] – [サイトマップ]で[サイトマップの追加/テスト]から追加します。

sitemap_web_master_tool

sitemmap.xmlの中はプラグインのオプションで選んだとおり、トップページのxml、年月ごとの投稿記事のxml、カテゴリーのxmlでした、
この子sitemapが軒並みエラーになっていたので、個別に再送信してエラーを消しました。
再送信の際に追加されてしまうのですが、個別に追加していると動的生成の意味がないなーと思いまして、とりあえず、sitemap.xml以外を削除しています。
このままで、今後記事が増えた時に子sitemapの「インデックスに登録済み」が増えるかどうか見てみたいと思います。

robots.txtを設置する

仮想robots.txtが生成されなくなったようなので、生成されるように出来ないか調べようと思いましたが、実robots.txtがあればそれが優先されるそうなので、静的ファイルを作ってしまいました。

[bash]
$ sudo vim /usr/share/nginx/mydomain/robots.txt
[/bash]

  • robots.txt

[vim]
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/

Sitemap: http://www.mydomain.com/sitemap.xml
[/vim]

  • ファイル所有者を変更します

[bash]
$ sudo chown apache:apache /usr/share/nginx/mydomain/robots.txt
[/bash]

以上!


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - Web

ad

ad

  関連記事

使っていないCSSセレクタをChrome DevToolsのCoverageで確認しました

使っていないCSSセレクタを確認しようと、Chrome DevToolsのCov …

EightにONAIRという機能が追加されてました

名刺サービスのEightにONAIRという機能が追加されていました。 オンライン …

Davinci Resolveで本編動画とは別にTwitter動画を作る

Twitter動画の時間 Youtubeでオンライン勉強会のデモ動画をアップして …

PHP 共通ヘッダ、フッタの内容をページによって動的に変更する

共通ヘッダ、フッタ それぞれ必要な内容を書いたheader.php、footer …

C#でOpenWeatherMap APIを使って天気情報を取得する

C#でOpenWeatherMapAPIを使って現在の天気を取得してみました。 …

Linux Mint 17 MATE 64bit にAptana Studio 3をインストールして日本語化

JDKのインストール 過去記事「Linux Mint 17 MATE 64bit …

PostmanでTwitter API 1.1を使う

AWS Lambda(Python)からTwitterに投稿するで取得した認証情 …

Googleナレッジパネルの申請が承認されました

今年の4/13に「Googleナレッジパネルの認証を受けるために申請してみた」が …

ホームページやサイトがiPhone,iPadのホーム画面に追加された時のアイコンを設定しておく

headタグでapple-touch-iconを指定 [html] [/html …

ホームページ、自作サイトにアメブロの新着情報を掲載する

MagipieRSSを使用 なので下記サイトでダウンロード http://mag …