先月「れいぶろぐ、HTTPSに対応」という記事を書いた。
HTTPSでこのブログにアクセスすると、いろんなリソースのURLが自動的に https://〜〜 になるのだが、HTTPSでないリソースが混ざっているとそれらはブロックされてしまうというのが、今どきのブラウザの動作だ。
このブログはかつてCSSとJavaScriptがHTTPSに対応していなかったので、HTTPSでアクセスしたときに表示が大きく崩れてしまうという問題があったのだ。
とはいえこのブログの標準はHTTPアクセスなのだが、対応できるものは一応やってしまおうということで、対応させたというのが先ほどの記事だ。
これで、HTTPSでアクセスしたときは「ニコニコミュニティのインラインフレーム」以外は正常に表示できるようになったのだが……
新たな問題は、音もなく忍び寄っていたのだ。
GoogleはHTTPSがお好き
俺がこのGoogleのドキュメントを読んだのは、今日になってからだった――
正規 URL を使用する - Search Console ヘルプ
……いや、そういえば、もう何年も前に読んだ気もするが、覚えてなかった。
Google では、正規 URL として HTTP ページよりも HTTPS ページを優先的に使用します。
上のリンク先より
な、なんだってーーー!?
いや、HTTPS版のページがあることがGoogleにばれなきゃ大丈夫!
と思いきや……
アクセス解析で気になった検索ワードがあると、実際に検索してみることもあるのだが、そうして見つけたこのブログの記事URLが「https〜」になってるのを、一昨日くらいに見つけてしまったのだ。
なんということだ……
正規URLを使用しましょう
正規URLは、まさに上記のリンク先で説明されていることだが、これを明示的に「http〜」に設定することでGoogleの意図を挫く……じゃなくて、HTTPのほうが正規であることを示そう。
しかし問題があって、WordPressのPHPは、自身がHTTPSでアクセスされているときには「https〜」のURLを吐き出すようになっている。
しかたないので、正規URLが「https〜」になっているときに「http〜」に置換することにした。
<?php // $canonical_url は正規URL
$canonical_url = str_replace('https:', 'http:', $canonical_url); ?>
<link rel="canonical" href="<?php echo $canonical_url; ?>">
左右にスクロールして全体を表示できるよ。青字はHTML、緑字はPHP
これでHTTPSでのアクセスは阻止できないが、正規のURLが「http〜」であることを検索エンジンに伝えることはできる。
Google様に逆らう強硬手段だが、あとは検索結果のURLが「http〜」に戻ってくれるのを祈るしかない。
まとめ
一般的にはHTTPSのほうがいいのかもしれないけど、このブログでは事情があってHTTPSを避けたいというお話でした。
普通にPHPを書くとプロトコルまでは制御できないんだもんなー。
面倒な話だぜ。
Google様には寛大な措置を望む。
???「それで私に逆らったつもりか?」
こめんと