WordPress・WEB系の開発(プログラム)関係や技術情報ほか、技術情報全般を掲載

  • このエントリーをはてなブックマークに追加

WordPressマルチサイト 子サイトのパーマリンク設定をすると Not Found になる

WordPressマルチサイト機能のサブディレクトリ方式でサイト構築を進めていたのだが、子サイトのパーマリンク設定後、アーカイブページやカテゴリページが[ Not Found ]となって表示出来ない現象があった。
原因を調べるためにごちゃごちゃ触っていて[blog]を付けると表示されるというおかしなことも分かった。。。何だこれ?

- 表示されないURL・・・hogehoge.dev/sample/archives/1
- 表示されるURL・・・hogehoge.dev/sample/blog/archives/1
# 設定したパーマリンク・・・「/archives/%post_id%」

データベースの wp_2_options テーブルの中身を確認したところ[blog]の設定が確認出来た。

# wp_2_optionsテーブルの rewrite_rules を確認
a:67:{s:61:"blog/archives/category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$"; ...省略...

管理画面からの変更方法が分からなかったので、直接DBを編集し[blog]を外したことろ意図した通り表示されるようになった。

# wp_2_optionsテーブルの rewrite_rules を直接編集[blog]を外す
a:67:{s:61:"archives/category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$"; ...省略...

解決したのはいいが、なんで勝手に[blog]が付くんだ?答えは、下記 options-permalink.php に書いてあった。

# wp-admin/options-permalink.php
if ( is_multisite() && !is_subdomain_install() && is_main_site() )
	$blog_prefix = '/blog';

81行目辺りにデフォルトで[blog]のプレフィックスが付くように記述されていたのである。。。
で、試しにここを

$blog_prefix = '';

のように、空にした状態で、新規サイトを追加しパーマリンクを設定してみたところ何の問題もなく正しく表示された。

なかなか迷惑な仕様だな!!

※関連記事:WordPressマルチサイト パーマリンク設定後の[/blog]を消す方法
http://devilab.net/2014/07/uncategorized-04093207.html

※WordPressバージョン:3.9.1

関連記事

コメントは利用できません。

アーカイブ