誤表示
当サイトの URL を Twitter にリンクさせると全く別のサイトの「カード」が表示される。原因がわからない。現段階で Google に検索結果からの削除を依頼しているが,直接回答があるわけでもなく,修正されるかどうかは未知である。
それから,このようになった他の要因として,そもそも当サイトのほうで Googlebot のクロールに対する制御をしていたことによる。
検索サイトに無闇に BLOG の内容を表示させノイズを増やす必要はないのだから,設置当初はメタ情報として noindex, nofollow を設定しておいた。そして,この WordPress の設定値がどう反映されるのかがまだわからず,ある程度経ってから,必要な情報(ページ)のみ index を設定すればよいと考えていたわけだ。
Google Search Console
この数日の間に WordPress 全体の大凡の設定が終わり,必要なページが検索サイトにかかってもよいと思われるところまできた。
ところがここで,Googlebot のクロールが弾かれてしまうことに気付いた。
それを確かめる方法がある。Google Search Console でサイトの Index を直接登録し,Googlebot 側でそれを検知できるかどうかを直接確認すればよい。結果は瞬時に出てくる。
ところが,どうやっても「登録できない」というエラーが返ってくる。その理由として「403エラー」が出ていると表示されるのだが,robots.txt を見ても,.htaccess を見ても,どこにもそんな制御は既述されてない。極めて不可解だ。
WordPress はプラグインも含めると設定項目が膨大にあるのだが,それでも robots.txt や .htaccess に追記する項目は限られているし,現に,それらの項目はブランクのままだ。クロールの問題なので,最初は robots.txt を疑い,その記述について調べ試したのだが一向に変化はなかった。
そうすると,.htaccess の問題であるというのが濃厚だ。
しかし,FTP でアクセスして覗いてみると,どうも WordPress が自動的に書き換えているようであり,そこに手動で勝手に書き加えていいものなのかどうか迷う。万一,下手に追記したものが,他の記述と不整合を起こした場合には,また別のエラーが出てきて事態が複雑になってくるからだ。
.hthaccess
最初は,セキュリティーのためのプラグインによる海外アクセス拒否の設定に問題があるのかとも思い,それを停止して試してみたのだが,それでも依然として「403エラー」によりインデックス登録が失敗する。
どうしたものかと思っていたところで,次のような情報を得た。
書かれていることは理に適っていたため,早速試してみた。とはいっても,ここに書かれている記述全てを .htaccess に書き込む必要はない。こちらが求めているのは Googlebot に対する制御を解消することであるわけだから,次の記述で大丈夫なはずだ。
### 検索エンジンをまとめて許可するためにenv化する(Must) SetEnvIf User-Agent "Googlebot" allowbot ### いったん全てを拒否する (Must) order deny,allow deny from all ### 検索エンジンからのアクセスを許可 (Must) allow from env=allowbot ### SearchConsoleのプロパティが確認出来るためにの対策 (任意) allow from googlebot.com allow from google.com
これを FTP で直接書き込んでもいいのだが,プラグインで使っている “All-In-One Security” には,ファイアウォールの「カスタムルール」というオプションがあり,ここに独自の .htaccess ルールを貼り付けてやると,自動的に書き込んでくれる。それを試してみた。
これで見事に Googlebot に検知されるようになった。
わかってみると余りにも単純明白でバカバカしいぐらいなのだが,それでもこれがわかるのに3日間は要した。まあ,これでやっとサイト全体の主要な設定は完了した。
のはずが……
その後,ドメインの設定項目の値を弄ったところ,不整合が起きたらしく,WordPress のダッシュボードにアクセスできなくなった。
この症状が出た場合,復旧させる方法が幾つかあるのだが,無理なことがわかった。上記 “All-In-One Security” はセキュリティー自体にはある程度確かなものがあるけれど,自分が締め出されてしまうという事故もあるということだ。
こういった場合でも,かなりの荒療治なのだが,奥の手がある。
- FTP で “plungins” ディレクトリーをリネームし(例えば,”plugins.bak” 等々),一旦,プラグインの全てを外した状態にする。これで,ダッシュボードへのログインが可能となる。
- 当然,この状態では表示や動作に不整合が起こるので,更に,”plugins” ディレクトリ(リネーム後)の中にある問題の原因となっているプラグインのディレクトリ名を同様にリネームしてやった上で,先ほどリネームしてやった “plugins” ディレクトリ名を元に戻してやる。
- その直後に,ダッシュボードのプラグイン項目で,問題を起こさないプラグインを次々有効化してやると,大方の環境は復元される。
- その上で,問題を起こしたプラグインを(形式的に)アンインストールしてやり,再インストールして,再設定してやる。
大体こんな具合だ。
今回の不整合は,最初サーバーで自動設定された記述(国外IPを全て弾く)に上記の内容を書き足してやったため,その後の設定変更によって,deny, allow
の記述が不必要になったために起きたものだ。
実は,”WP Htaccess Editor” というプラグインがあって,最初はこれで,そもそも deny, allow
の記述のある箇所に追記してチェックし巧くいったのだが,”All-In-One Security” に貼り付ける際に deny, allow
の記述まで一緒にしてやったため,不整合を起こしたというわけだ。
間抜けにも程があるというものだ。というより,WordPress の環境構築のためにかなり心身に負担を強いているので,細かな判断ミスが生じ易くなっている。(これが巧くいってくれると,この先ずっと楽になるのだから。)
Twitterのメタタグ
ところが,こうして Googlebot が index を検知するようになっても,一向に Twitter の「カード」が表示されない。たしかに,誤ったサイトのカードは表示されなくなった(検索エンジンのキャシュが削除された)ものの,今度は URL を貼り付けても,その URL の文字だけになってしまう。どういうことなのかわからない。
それで今度は Twitterbot について調べ始めたのだが,むしろどのサイトも Twitterbot を弾く設定をしていることがわかっただけだった。それでは,どうやって通常の情報サイトなどはカード表示ができるように設定しているのだろうか?
実は,Google の場合,通常のヘッダ情報にあるメタタグが反映されるのであるが,Twitter の場合には独自のメタタグを読み込むということなのだ。 だから,それを header.php の <head>〜</head>
に直接書き込んでやる必要があるわけだ。
ただ,それだけでは肝心の Twitter に直接登録されるわけではない。実は,それを直接認識させる方法があるのだ。Twitter には “Card validator” というツールがあり,「カード」が正常に表示されるかどうか確認できる。と同時に,直接登録することにができるようになるわけだ。
現在では,投稿したときの状態がそのまま表示されるということはないそうなのだが,ただ,処理結果が瞬時に表示されるので,少なくともエラーなくメタタグの情報が登録されるということが確認できる。便利なものだ。
「カード」のメタタグについては,WordPress やそのプラグインにも設定項目があるのだが,どれが本当に反映されているのかがわからない。そこで,またいろいろ試して確認することになる。干渉し合っている可能性もあるので,最後は,必要のない設定項目は外し,header.php に直接記述した値が反映されるように四苦八苦したわけだ。
それでやっと思い通りに表示されるようになった。しかしまた,どうでもよい新しいスキルを身に付けることになった。