かくてもあられけるよ

セミリタイアしてシェアハウスで暮らすノマドなミニマリストの株主優待日記

はてな独自ドメインのwwwなしで不具合発生。やむを得ずwwwありに転送

覚えやすくて打ち込みやすい、短いドメイン名が好みだ。最短「1文字@3文字.jp」というメールアドレスを実現したくて、バリューサーバーからお名前サーバーへの移転を検討したが、諸々の事情で断念した。

はてなブログをProにして設定した独自ドメインも、できればシンプルなwwwなしで運用したい。しかし、はてなのマニュアルには以下の記載があり、ネイキッドドメインは利用できないことになっている。

取得したドメインの前に、必ずサブドメイン(wwwやblogなど)を付加してください。

なぜかwwwなしでも運用できた

いろいろ調べたところ、ドメインを取得したバリュードメインのDNS設定で、

cname @ hanenablog.com.
cname www hanenablog.com.

と記述すれば、はてなブログの独自ドメインでwwwなしでも運用できることがわかった。はてな側の設定は、独自ドメインをexample.comという風にwwwなしでそのまま入力すればOKだ。

f:id:kenko-san:20171106001333j:plain

これでトップページも個別記事ページもwwwなしで表示され、仮にwwwをつけたURLを入力してもwwwなしのページに転送される状態にできた。

ドコモ回線だけDNSエラー?

1年ほどwwwなしの状態で普通にブログを運用できていたのだが、1週間ほど前から異変に気づいた。PCでは問題ないのだが、スマホで自分のブログをチェックしようとすると、「このサイトにアクセスできません」というDNS関連のエラーが出るようになった。

f:id:kenko-san:20171106001006j:plain

自宅のWiFiに接続している状態では大丈夫だが、楽天モバイルのSIMでLTE接続すると問題が起こるらしい。ブラウザだけでなく、はてなブログの公式アプリでも同じ状態で、さらにテザリングしてつないだノートPCでも症状が発生した。

スマホ自体のトラブルというよりは、楽天モバイルかドコモ系のMVNOがバリュードメインのDNSと相性が悪くなった可能性もある。そうなると、自分以外のスマホやPCでも症状が出ている恐れがあり、深刻だ。

DNSをいじったら元に戻せなくなった

ウェブで調べても障害や不具合の報告は出ていないが、できるだけのことはしてみようと思ってバリュードメインのネームサーバーをいじってみた。とりあえず現在設定したあるns11~13.value-domain.comから、NS1~5の方に変更してみたところ、DNSの設定が「a @ xxx.xxx.xxx.xxx(<-適当なIPアドレス)」の1行に勝手に置き換わってしまった。

f:id:kenko-san:20171106001208j:plain

ネームサーバー変更画面の注意事項を読むと、赤字で以下のように書いてある。

当サービス間のネームサーバーの変更(ns1~5.value-domain.com ↔ ns11~13.value-domain.com)をした場合、DNS設定は自動で引き継がれませんのでご注意ください。ネームサーバー変更前のDNS設定を、再度行ってください。

落ち着いてDNSの設定を元の

cname @ hanenablog.com.
cname www hanenablog.com.

に書き換えたが、すると今度はなぜか、はてなブログのURLがexample.hateblo.jpという初期状態に戻ってしまった。

wwwなしの独自ドメインを入れても上記に自動転送される。一方wwwありだと、404 Blog is not foundのエラー画面が出てしまう。はてなのサービスまでは届いているので、ここから先は手が出せない。

f:id:kenko-san:20171106001252j:plain

wwwありに路線変更

マニュアルに従わず裏技的にwwwなしの独自ドメインで続けてきたが、とうとう限界が来たのかもしれない。DNSの設定をいろいろ試したが、はてな側の挙動が読めないので一向にらちが明かない。

せっかくお金を払ってドメインを取ったし、万が一はてなからよそに移転する可能性を考えると、hateblo.jpに戻るよりはやはり独自ドメインで運用したい。試行錯誤しても以前のwwwなし状態を再現できなかったので、ここはマニュアル通りwwwのサブドメイン付きに変えようと決心した。

とりあえずDNSのレコードは上記設定のまま、はてな側の独自ドメイン設定をwww付きのwww.exmple.comに変更した。すると、1分ほどで「ドメインの設定状況:エラー」という表示が「有効」に切り変わった。

f:id:kenko-san:20171106001437j:plain

当然、ブログの方もwwwありのURLで表示され、wwwなしでトップページにアクセスしてもwwwありの方に自動転送されるようになった。

はてなブログ内のリンクURLを一括置換

手順通りやれば簡単に済んだと一安心したところ、今度は過去記事を参照しているブログカードが空欄になってしまう問題に気づいた。どうやらwwwなしで転送されるのはトップページだけのようで、個別ページはNot foundになってしまうらしい。

とりあえずソースコードを開いてiframe内のリンクURLにwwwを追加すれば解決したが、はてなブログの編集画面にテキストの検索・置換機能は付いていない。手動で編集するか、Wordにコピペして置換してコピペし直す…と考えたが、300記事以上あるので煩雑すぎる。

調べたところ、はてなブログ内の全記事対象に一括テキスト置換してくれる便利なツールがあることを知り、利用させていただいた。shiromatakumi様、ありがとうございます。

念のためバックアップを取ったうえで、1~400記事まで4回に分けて置換をかけた。記事によってブログカードのリンクが「http://~」と「http%3A%2F%2F~」の2通りに記載されている場合があったので、それぞれwww付きになるよう2回処理させてもらった。

ブログの設定画面にHTMLを打っているaboutページ内のリンクは手動で修正し、これで個別記事内のブロクカードはすべて正常表示されるようになった。

Google検索結果からアクセスできない問題

しばらく経ってからブログのアクセス数を見ると、www付きに変更した時点からまったく数字が変わっていないことに気づいた。もしやと思って適当なキーワードで検索をかけてみたら、案の定、上位に出る記事のリンクがwwwなしのままで、Blog is not foundになっていた。

さらに、他のはてなブログから引用していただいた記事も、ブログカードにNot found表示が出てしまっていた。自分のブログ内はテキスト置換で対処できたが、外部サイトにリンク変更を反映される手段は思いつかない。さすがにこれは申し訳ないと思って、根本的な解決方法を調べてみた。

外部サーバーからwwwありに転送する

はてなブログをwwwなしで運用するという情報は少ないが、逆にwwwなしからwwwありのページに転送をかけるという記事はいくつか見つかった。外部サーバーを使って301リダイレクトをかける方法だ。同じバリュードメインを使っているnomicoさんの記事が参考になった。

別途借りているバリューサーバーのIPアドレス元に、DNSに「a @ xxx.xxx.xxx.xxx」と追加。ドメインウェブの設定で、Mainにwwwなしの独自ドメインを入力。public_htmlフォルダに転送先のwww付きURLを書いた.htaccessファイルを置けば、すんなり実現できた。

301リダイレクトは検索エンジンに恒久的な転送を伝えるはずなので、いずれwwwありのURLの方に検索結果も置き換わり、評価も引き継がれることが期待できる。

外部からのブログカード参照もこれで正常表示に戻ったようなので、結果的には自分のサイト内のリンク修正も不要だったといえる。今回お借りしたテキスト一括置換ツールは大変便利だったので、また別の機会にお世話になることもありそうだ。

スマホのNot foundも解決

www付きのURLに変えたことで、いつの間にかスマホの回線でアクセスできないという問題も解決していた。もしwwwなしで運用したいという同じ考えを持っている人がいたら、大人しく諦めて仕様通りにサブドメインを付けた方が無難だとアドバイスしたい。

今までどうしてwwwなしで運用できていたのかも不思議だが、はてな側の処理はブラックボックスなので、何かあったら今回のようにGoogleの検索結果からリンクが外れる致命的なエラーになりかねない。少々URLが長くなるのは仕方ないが、昔はwww付きで打ち込むのが普通だったので、そのうちすぐ慣れるだろう。