先日、いつも使っているサーバーと違うサーバーでWordpressをインストールし、他のサーバーで構築したWordpressサイトを移転しました。
WordPressサイト移転の方法
All-in-One WP Migrationプラグインを使った簡単手順で移転しました。
- いつも使っているサーバーで構築したサイトをAll-in-One WP Migrationプラグインを使ってエクスポート
- 見知らぬサーバーにそのままインポートしました。
引っ越し先と違う全然関係ない別ドメインでサイトを作っていたので、URLの書き換えもプラグインを使って自動で行いました。
インポートした後にサイトにアクセスするとひとまずサイトが表示されたので一安心。
URL正規化で問題あり
サイトにアクセスして、ブラウザのURL部分を確認するとhttps、wwwありにリダイレクトされました。
https、wwwありにURLが正規化されていました。
個人的にはURLはwwwなしの方が好みです。www無しにURLを正規化しようと思って.htaccessにリダイレクトの記述を追加しました。
記述した内容は、適当にググって見つけた以下のサイトの記述を参考にしました。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
.htaccessに正規化の記述が無いのに勝手に正規化されていたので、なんとなく嫌な予感はしていたのですが、『リダイレクトループが発生した』というメッセージが表示されて、サイトが表示されなくなりました。
WordPressでURLを正規化する時のチェックポイント
wwwありとなしの正規化がぶつかっているのでループしているわけですから、wwwありに正規化してる箇所がどこかにあるはずです。
少し焦りましたが、落ち着いて、WordPressの管理画面の設定を見ると、
設定 > 一般設定と進み、「WordPress アドレス (URL)」とサイトアドレスという部分を確認すると、
https://www.hogehoge.comと書かれてました。
ほほぉー。これじゃね?と思いました。
WordPressのこの部分の役割をあまり真面目に考えたことが無かったのですが、どうもこの部分にwwwありのURLを書いておくと、wwwありにリダイレクト(URL正規化)される便利仕様のようで、自前で.htacessでwwwなしにリダイレクトすると、wwwあり⇔なしをピンポンしてしまうようでした。
WordPress アドレス (URL)をwww無しに設定
WordPressの管理画面の設定を以下のようにwww無しに変更しました。
https://www.hogehoge.com⇒https://hogehoge.com
.htacessのwwwなしリダイレクトは不要(削除)
.htacessの自前のリダイレクトを削除
無事wwwなしに正規化されました。
急にwwwありだとページが表示されなくなった場合
WordPressの管理画面の設定でwwwあり・なし、http・httpsの正規化ができると書いてきました。
しかし、ある日突然wwwありでアクセスしたら、wwwあり⇒wwwなし⇒再度wwwありにリダイレクトされてエラーになってページが表示されないという動きになりました。
今まで表示できていたのに、正直なんでこうなってしまったのか理由がわかりません。
しかし、DNSレコードを見ていると、そもそもAレコードにwwwが定義されていないので、DNSレコード的にはwwwの接続先が無いのは気持ち悪いと思って、Aレコードにサブドメイン:wwwとIPアドレスの関係を定義することで問題なくwwwなしにリダイレクトされてページが表示されるようになりました。
A XXX.XXX.XXX.XXX もとからあったAレコード
A www XXX.XXX.XXX.XXX 追加したAレコード
まとめ
最近のWordpressサイトはほぼwwwなしのURLに正規化されています。Wordpressサイトの引っ越しなどでURLが変わる場合は、WordPressの管理画面の設定で「WordPress アドレス (URL)」がどうなったのかよく確認した方が良いという事例でした。