この2日間の紆余曲折・試行錯誤・あの手この手・迂回迷走により、nucleusのNP_customURLについて以下のことが分かった。

beetlesディレクトリに設置したindex.phpに、

$CONF['Self'] = $path.$category."/";
selectBlog($category);

と記述する($pathはサイトドメイン、$categoryはサイトのカテゴリーを表し、nucleus的にはブログ短縮名)。最後に“/(スラッシュ)”をつけなければならないが、“/index.php”としてしまうと逆にfancyURLが効かなくなってしまう。

同じディレクトリの.htaccessに、

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?virtualpath=beetles/$1 [L,QSA]
</IfModule>

と記述する。この場合、index.phpが実際に存在しているため

RewriteCond %{REQUEST_FILENAME} !-f

の条件に“matchしない”ため、以下のRewriteRuleが適用されず、既定のブログが表示される。

そこで、RewriteCondの条件を抜いて

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^(.*)$ index.php?virtualpath=beetles/$1 [L,QSA]
</IfModule>

とすると常にRewriteRuleが適用されるため、該当ブログ(短縮名beetles)が表示される。この場合も、“beetles/$1”の部分のスラッシュに注意!

あと、constructionのブログを既定のブログにしているため、“NP_CustomURL のオプション設定”⇒“デフォルトのブログの URL にもブログの短縮名を追加する”を「はい」にしておかなければリンクから“construction”が抜け落ちてしまう。

また、テンプレートのアイテムリンクが<%itemlink%>のままだと、インデックスページからの該当アイテムへのリンクが
http:/www.nonukes-maria.net/construction/item_100.html
であるのに対し、カテゴリー経由では同じアイテムへのリンクが
http://www.nonukes-maria.net/construction/category_2/item_100.html
となってしまうため、アイテムへのリンクが分散する結果となりSEO的によろしくない。

従って、テンプレートのアイテムリンクを<%categorylink%><%CustomURL(path)%>に変更する。

まあ、趣味のサイトだからSEO的なコトはあまり気にしなくてもいいっちゃいいんだが、1つのページへのリンクが2つあるってのも気持ち悪いしね。

と、ここまではローカル環境で確認済み。

ただ、はなこさんのサイトはサブドメインをたてているため、ローカル環境では確認できない。

サブドメインたてているときの運用法は、
複数ブログをサブドメインとして運用する際のCustomized URL
http://appofit.com/nucleus/plugin-nc/customized-url/2/
さくらインターネット+サブドメイン+サブディレクトリ+Nucleus+NP_CustomURL
http://memorinyo.seesaa.net/article/122743944.html
に掲載されているが、これはあくまでも
www┳index.php(ブログのメインページ)
   ┣config.php
   ┗subdomain
の場合。

ウチのサイト
www┳index.php(ブログではないインデックスページ)
   ┣nucleus┳index.php(ブログのメインページ:未使用)
   ┃    ┗nucleus(config.phpが入っているディレクトリ)
   ┗subdomain
とは事情が異なる。(そもそも変なディレクトリ構造にすんなって?誰?妖精?)

これに関してはググっても直接参考になりそうなサイトはなさそうだ。

祈るような気持ちで、いざ、レンタルサーバーへ!

、、、やっぱりはなこさんのサイトだけダメ。

config.phpに対して変な位置に(誰?妖怪?)サブドメインのディレクトリがあるため、.htaccessのRewriteRuleが超ややこしくなっているようだ。

ばきぼき、ぐちゃ。

、、、ゴメン、はなこさん。

サブドメイン、やめにするわ。

“のぬけす”の紆余曲折の、1コンテンツに格下げ。

普通の“hanakoディレクトリ”とさせていただきます。

ということで心が折れた結果
http://www.nonukes-maria.net/hanako/
としてはなこさんのブログを設置することに。

これでうまくいくはず。

、、、だった。

いや、customURLは正常に働いている。

何がおかしいって、、、

スタイルシートが読み込めとらん!!!

head内のスタイルシートのURIはちゃんとhttp://www.nonukes-maria.net/hanako/files/hanako.cssになっていて、サーバーのディレクトリ構造と一致しているし、スペルミスもない。

ファイルが壊れているのかな、、、?と思い、一応“W3C css validation service”で検証してみた。

エラー: 以下のエラーが見つかりました。 (1)
ファイルが見つかりません:
http://www.nonukes-maria.net/hanako/files/hanako.css: Not Found

いや、Not Foundてアンタそりゃどーゆー、、、

ふがっ!!!

そか。

.htaccessでスタイルシートまでリダイレクトされてるんだ、、、

.htaccessに

RewriteCond %{REQUEST_FILENAME} !hanako.css
RewriteCond %{REQUEST_FILENAME} !top.gif

の条件を加えてアップすると、、、

ちゃんと表示されたよ。。。orz

まさに“紆余曲折”とはこのことか?

迷走しまくった挙句、やっとなんとかカタチになった。

最終的に、/hanako/の.htaccessは以下の通り。

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !hanako.css
  RewriteCond %{REQUEST_FILENAME} !top.gif
  RewriteRule ^(.*)$ index.php?virtualpath=hanako/$1 [L,QSA]
</IfModule>

ここで、ふと疑問がよぎる、、、

サブドメインでうまくいかなかった理由はこの辺りにあるのか、、、?

、、、試してみるしかない。

index.phpを、

$CONF['Self'] = "hanako.nonukes-maria.net/";
selectBlog('hanako');

とし、.htaccessはそのまま使用してみると、見事に“500 Internal Server Error”が吐き出される。

一方、最後の行を

RewriteRule ^index\.php(.*)$ index.php?virtualpath=hanako/$1 [L,QSA]

に書き換えると、はなこのインデックスページにはアクセスできた。しかし、リンク(http://hanako.nonukes-maria.net/category_17/item_98.html)
をクリックすると“404 Not Found”となる。

“The requested URL /category_17/item_98.html was not found on this server.”

ちなみにmySQLの“nucleus_plug_customurl”テーブルをphpMyAdminから覗いてみると、category_17とitem_98.htmlはいずれもhanakoに紐付けされている。

ということは、(.*)⇒$1の後方参照がうまくいっていないようだ。

最後の行を

RewriteRule ^index\.php(.*)$ http://www.nonukes-maria.net/hanako/index.php?virtualpath=hanako/$1 [L,QSA]

に書き換えると、インデックスページ自体が“404 Not Found”となるのでダメ。

“The requested URL /hanako/index.php was not found on this server.”

忘れよう。

その後色々試してみたがどれもうまくいかず。唯一分かったことが、

RewriteRule ^(.*)$ XXXXX [L,QSA]

だと、すべて“500 Internal Server Error”が吐き出されるということだった。

くそう、顔文字みたいなくせに!! ^(.*)$

サブドメインじゃなければうまくいくのになあ、、、

この違いが未だによくわからない。というか、わかったら問題は解決するはず。

でももう無理。

今日のところはサブドメインでのアクセスはきっぱり諦めて、気が向いたらまた調べよう。

おやすみ、妖精さん。