サーバー移転で、WordPressのリンクが全部切れた

 サーバー移転は、phpMyAdminを使って、問題なく終わったと思っていた。

 トップページも表示されていたし。ところが、メニューからのリンクが全部サーバーエラーになってしまっていたのだ。

 このサイトは、パーマリンク設定をカスタム構造「/%category%/web%post_id%.html」にしていて、それ自体は、phpMyAdminでインポートした際に、ちゃんと入力されていた。

 ただ、動作的に、この辺りが怪しいとは思ったので、元々入力されていたものを変更することなく、「変更を保存」を押すと、あっさりリンクは直った。

解決方法:管理画面>設定>パーマリンク設定 カスタム構造に入力されているのを確認の上、「変更を保存」を押す。

CPIでパーマリンク

CPI独自仕様のPHPでは、WordpressでPermalinks機能が正常に動作しない。
パーマリンクの設定をすると、.htaccessファイルに

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

と自動挿入するが、これだけだと駄目で、その前に

Options +FollowSymLinks

を入れる必要がある。これは、CPIサーバーでmod_rewriteを有効にするための記述。

.htaccessファイル全部の内容

suPHP_ConfigPath /usr/home/サーバー番号/secure/ ←php.iniの場所
AddHandler x-httpd-php528 .php ←使用するPHPのバージョン指定
Options +FollowSymLinks ←今回手動で追加

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

サーバー移転の手順

XREA Plusの場合

  1. 新サーバーに「web.level-k.jp」のディレクトリを作成する。これは、DNSの割当てがまだ旧サーバーに向いているためで、手動で行う。
  2. 「web.level-k.jp」内にWordPressデータをアップロードする。
  3. 現在使用しているテーマとプラグインも追加でアップ。空の.htaccessファイルもアップしておく(パーミッションは「666」)。
  4. 新サーバー用のwp-configファイルを作成しアップする。
  5. 新サーバーのWordPressにIPアドレスでアクセスする。URLをindex.phpまで含めないと認識しなかった。
  6. 旧サーバーのWordPressからエクスポートしたWXRファイルを新サーバーにインポートする。
    ダッシュボードにログインし、「管理>インポート」で、エラーが発生しました。アップロードしたファイルを…に移動できませんでした。というメッセージが出た。
    このエラーはパーミッションの問題かと思い、変更すると、次の画面「投稿者の割り当て」に進めた。ここでは、インポートした投稿や下書きの編集/保存を簡単にするために投稿者名を変更することができるようだ。添付ファイルののインポートはないので、チェッックしない状態で、「実行」。「実行」ボタンを押してから結構時間がかかった挙句にうまくいかない…
    が、何度か試したところ、インポートできたようだ。何度もボタンを押したせいだと思うが、サブカテゴリーが重複しまくっていた。手動で削除。サイドメニューとお問い合わせフォーム、パーマリンク設定もなぜか反映しなくて、面倒だから手動で再作成した。
    後記:他の問題解決の際に気がついたが、これは適切な場所にアップロードができなかったからかもしれない。「設定>その他の設定>アップロードするファイルの保存場所」が「wp-content/uploads」になっているか確認すること。また、「uploads」フォルダは最初から入っているが、これを削除してから、同じものを作成しパーミッションを適切に割り当てる。

パーマリンク設定

デフォルトのままだと、URLがあまり美しくないので、カスタマイズする。その方がSEOにも有効なはず。
設定方法:空の.htaccessファイルをサーバーにのせ、パーミッションを「666」にする。
ダッシュボードの設定内にパーマリンク設定があるので、カスタム構造を選び「/%category%/web%post_id%.html」とした。