サーバー移転で、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

同カテゴリー内で「前の記事」「次の記事」のリンク

デフォルトの「前の記事」「次の記事」リンクは、カテゴリーの区別をしないため、カテゴリーメニューから記事を選んでも、カテゴリーとは無関係な記事が前後につく。

同カテゴリーで前後の記事をリンクさせたい!ということでハックする。

ファイル:wp-includes/link-template.php 585、589行目
テンプレートタグ:previous_post_link() , next_post_link()
これらのタグの第3引数が $in_same_cat なので、false から true に変更する。

1つの記事で複数のカテゴリーが含まれている場合や、親カテゴリーを選んだ場合、トップページから記事を選んだ場合など変な動作をしそうだが、その問題は後日また改めて検証したい。