Linuxからアホ話まで、何でもありでござる

2008年05月04日

URLを整理する pluginのhack

[Nucleus]
Nucleusを静的ページに見せかけるにはGoogleなどのサーチエンジンに引っかかりやすくする方法にあるとおりですし、Fancy URLモードを用いたほうがスマートです。探してみるとNP_CustomURL.phpというプラグインもあり、スキンやテンプレートなどもろもろをいじくりまわすよりこれらで対処したほうがスキンを変えたときなどの対応はしやすいでしょう。ですから、今まで特に何もせずNucleusを使ってきた人が静的ページ風なURLにする場合は上記2つのいずれかをお勧めします。

そもそもいまどき静的ページ風に偽装しなくても問題ないのですが、俺の場合アクセス解析に使っているソフトが「?」以降の文字を無視してしまうのです。出来上がった解析結果はホームディレクトリ一極集中となり、これでは解析する意味さえありません。ですから静的ページ風に見せかけて多少なりとも分析しやすい形式に変える必要があったのです。ですが、俺のサーバはVine2.6のころにはFancy URLモードで動かせませんでした。しかたなくmod_rewriteを使ってURLを変えていたのですが、いろいろいじっているので今更Fancy URLモードにするのも思った以上に手間がかかりそうです。よって今までのまま、可能な限りitemid=xxxxからitem-xxxx.htmlに変更していきます。

スキンやテンプレートでitemid=xxxxitem-xxxx.htmlに変更するのは、とにかくひたすらitem-.htmlに変更していきます。片っ端から変更です。

さらに、このサイトの場合、右カラムのエントリ一覧やコメント&TBはpluginを使って表示させています。これはプラグインのコード自体をhackする必要があるものもあります。残念なことに俺はphpをほとんど理解していません。ですが駄目だったら戻せばいいだけなので、ちょっとソースをのぞいてみます。要はスキン・テンプレートの表示を変更するのと同じ要領で大丈夫だろうと考えたわけ。

早速エディタで開いて、リンクを表示させる<a href=というところを探します。その後、前後の変数を読み解くわけです。俺の場合、NP_ArchiveListEX.php、NP_CommentTree.php、NP_ItemNaviEX.phpの3つのプラグインをhackして、どうにかこうにかすべてitem-xxxx.htmlに変えることが出来ました。

ただ、ここまでの変更は、サイトを表示させる上での変更です。内部的にはitemid=xxxxという形式でパラメータを渡してやらなければいけません。その記述が
RewriteEngine On
RewriteRule ^archive-([0-9]+)-([0-9]+)-([0-9]+).html+ index.php?archive=$2-$3&blogid=$1
RewriteRule ^item-([0-9]+).html+ index.php?itemid=$1
RewriteRule ^archivelist-([a-z]+).html+ index.php?archivelist=$1
です。俺の場合、カテゴリ表示もcatid=xxxからcategory-xxx.htmlに変更したので、RewriteRule ^categpry-([0-9]+).html+ index.php?catid=$1という記述も追加してあります。これは.htaccessにおくことも出来ますが、Apacheの設定ファイルの中に入れておくことも出来ます。Apacheの設定ファイルに記述したほうが早いらしいです(真偽は不明)。

後は検索エンジンにもitem-xxxx.htmlという形式で拾ってもらうよう、robots.txtに
User-Agent: *
Disallow: /index.php?
という一文を追加して終了。TrackBack以外はほぼ静的ページ風に偽装完了です。あとはTrackBackかぁ・・・これってめんどくさそうなんだよなぁ。気が向いたらやってみようっと。

一応 終了

ぎゃー、HackをHuckって書いてた。駄目すぎ。
orz


ブログランキング・にほんブログ村へ
posted by oyajiman at 2008年05月04日 22:55:47



コメント

コメントはありません

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.

コメントする