WordPress 3.3.1 にアップグレードして、順調って思っていたけれど、カテゴリ、アーカイブ、タグ等のページにアクセスできていなかったことに、布団に入ってから気がついた。個別ページはなんとかアクセスできているから、まあいいか、と思って眠ったのだけれど、やはり気になって起きて作業した。
結論としては「 Advanced Permalinks 」のせいだった。プラグインの有効化・無効化だけでなく、パーマリンクも保存し直さないとリセットされないみたいで原因を突き止めるのに時間がかかってしまった。 (Advanced Permalinks は開発もやめてしまったようで、 3 系では動きそうにないな、とは思っていたのですが。以前使っていたサーバーにサイトのクローンがほぼあったからきちんとプラグインの動作確認をするべきでした。検証が甘かった。)
目次
「 Permalink Redirect 」をインストール
Advanced Permalinks は途中からパーマリンクを変更するためにインストールしており、投稿スラッグも英語に変更したので、いっそ全部「 /boyaki/%year%/%monthnum%/%postname% 」にしてしまえ! と。それで「 Permalink Redirect 」なら 3.3.1 でも動いているようなので管理画面から検索してインストールしたのですが、設定の項目が現れない。それで右往左往。管理画面に現れないならそこだけ修正してやる、ってコードを見てみたら、なんとぜんぜん違うプラグインだったのですよ。同名のプラグインが存在するようですね。それで開発元から「 Permalink Redirect 」をダウンロードして手動でインストール。設定画面が無事に表示されました。
旧パーマリンクをリダイレクトするプラグイン
→ Scott Yang ’ s Playground : Permalink Redirect WordPress Plugin
URL 末尾の「 ?q=ek 」なんかがあるときにリダイレクトするプラグイン
→ WordPress Plugins : Permalink Redirect
同じ名前で違う機能のプラグインがあるなんて紛らわしい。 Permalink Redirect は管理画面からはインストールしてはダメです。
パーマリンクおよびリダイレクト系のプラグインの動作検証
以下主なパーマリンクリダイレクトプラグインの WordPress 3.3.1 での動作検証。
- Advanced Permalinks →動作×
記事のリダイレクトはできるがカテゴリ、アーカイブ等のパーマリンクが効かなくなる。もう更新しないようです。 - Permalinks Migration Plugin for wordpress (Dean ’ s Permalinks Migration) →動作×
ダウンロードできない。 - Permalink Redirect →動作◎
同じ名前のプラグインが 2 つあるので注意! - Permalinks Moved Permanently →動作×
設定画面が出てこない。 - Quick Page/Post Redirect →動作◯
リダイレクトを 1 ページづつ指定してならリダイレクトできる。パーマリンクの変更には向いていない。 - Redirect Old Slugs
WprdPress 2.1 以上ならコアファイルに機能が取り込まれている。インストールする必要なし。 - Redirection →動作◯
正規表現でのリダイレクトなので、このサイトのパーマリンク変更には使えなかった。(正規表現なら .htaccess に書いても同じがする。)
間違っていたらご指摘下さい。
Permalink Redirect の設定
*追記*
Paths to be skipped
リダイレクトを除外する URL を改行ごとに正規表現で入力。
例) boyaki$
Path pairs to redirect from and to
リダイレクトする URL を改行ごとに記入。リダイレクト前とリダイレクト後の URL の間にスペースを入れる。
例) boyaki/2012/05/buy-new-tv-regza-32r1 boyaki/2012/05/non-led-tv-regza-32r1
Old Permalink Structures
以前のパーマリンクを入力。
FeedBurner Redirect
FeedBurner へ Feed をリダイレクト。
Hostname Redirect
チェックをいれると www のあるなしをリダイレクトして一本化してくれる。
「 Old Permalink Structures 」でリダイレクトされたものは 302 の一時移転となるので Google のウェブマスターツールでタイトルの重複がたくさん出るはめになります。そこでプラグインを改造。
「 ylsy_permalink_redirect.php 」の 405 行目の「 302 」を「 301 」にする。
if (!function_exists('wp_redirect')) {
function wp_redirect($location, $status=301) {
global $is_IIS;
参考)
→ hislab :パーマリンク変更後に新 URL にリダイレクトしてくれる!「 Permalink Redirect 」