URL名を設定するプラグイン Customized URL

Nucleusを使用する際に、アイテムやカテゴリに任意のURL名を付与するCustomized URLというプラグインをご紹介します。
このプラグインと、Nucleus標準機能であるFancy URLを組み合わせることで、静的なサイトであるかのようにURL構造を設定することが可能となります。

Customized URLのダウンロードおよび使い方は、Nucleus CMS Japan Wikiのcustomurlプラグインのページをご確認ください。

NP_CustomURLは、圧縮ファイルでダウンロード可能です。
ダウンロードした圧縮ファイルの中身を、nucleusのpluginsディレクトリにアップロードします。
プラグインを有効にする前に、管理画面のグローバル設定で、URLモードをFancyに設定しておきましょう。
Fancy URLを使うためには、.htaccessの設定も必要です。
.htaccessに以下の行を追加してください。

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

次に、index.phpを以下のように書き換えます。

<?
$CONF = array();
$CONF['Self'] = '';
 
include('./config.php');
 
selector();
 
?>

ここまでの作業が終わったら、管理画面のプラグイン管理からCustomized URLをインストールして完了です。

なお、CPIのサーバーでは、.htaccessでFollowSymLinksを有効にしておく必要があるようです。
上記.htaccessの追加行の前に、以下の行を追加しておいてください。

Options +FollowSymLinks

この投稿へのコメント

  1. わらじ said on 2010/06/29 at 13:21

    はじめまして。
    サブドメインでのCustomized URLで行き詰っております。
    「2. 複数ブログをサブドメインとして運用する際のCustomized URL」の記事が読みたいのですが、アクセスするとその前の記事に飛ばされてしまいます。
    お手数ですが、該当記事を読めるようにしていただけませんでしょうか。

    • jun said on 2010/06/29 at 13:33

      ご指摘ありがとうございます。
      WordPressのバージョンを上げたことで、複数ページの記事がうまく展開されないようになってしまっているようです。
      取り急ぎですが、URL末尾に ?page=2 と付けていただくと表示されるかと思います。

  2. もんど said on 2010/07/13 at 02:35

    「複数ブログをサブドメインとして運用する際のCustomized URL」について質問いたします。ごく初歩的な内容で申し訳ありません。

    チカッパレンタルサーバで上記のような運用をしたいと思っております。

    質問1)
    ブログが3つある場合は、記事中「index.php」の5行目
    「selectBlog(‘subdomain’);」の行を3つ書いておく(3行分増やす)ということになるのでしょうか。

    質問2)
    サブドメインの設定はレンタルサーバのコントロールパネルで行うようになっています

    「.htaccessとindex.php」の書き換えはご説明のとおりにやるとして、このコントロールパネルで、サブドメインとして設定する「フォルダ」を指定しなければなりません。
    実在しないフォルダを指定することになると思いますが、問題ないのでしょうか。
    (それがまさにこのプラグインの働きなのかもしれませんが ^^;)

    • jun said on 2010/07/13 at 11:49

      質問1が質問2の内容と関連するので、先に2の方からお答えします。
      チカッパは使ったことがないので外しているかもしれませんが、おそらくwww.maindomain.tld/subdomain/ を subdomain.maindomain.tld に割り当てることになるかと思います。
      この時、subdomainというディレクトリは実在してOKです。

      質問1の方ですが、上記実在するディレクトリの中にindex.phpを作ることになりますので、selectBlogの記述はindex.php 1つに対して1行となります。

      なお、このページで紹介している.htaccessとindex.phpの書き方は、上記構成の場合のサブドメイン用のものです。

      文字だけだとイメージし難いでしょうか。。。
      テスト環境を構築できるサーバーを探してみます。

  3. もんど said on 2010/07/14 at 00:51

    junさん

    アドバイス頂いた通りにやってみたら、できました。
    ありがとうございます!<(_ _)>

    しかし、ここでひとつ問題がでました(^_^;)

    最初、
    例)http://subdomain.domain.com/
    というURLで、二つ目に作ったブログのトップ表示ができ、やったー! と思っていたら…

    そのブログにカテゴリを新しく作って記事をアップすると、サーバーから500エラーが返ってきました。つまり、
    例)http://subdomain.domain.com/newcategry/
    が表示できないのです。

    もしかして…そのカテゴリ名のフォルダが実在しないから…?でしょうか。。。
    (素人考えですが)

    ちょっと考えてみたのですが、管理画面>ブログ設定>「BlogのURL」項を
    例)http://subdomain.domain.com/ でなく
    例)http://domain.com/subdomain/ にしておかなければならないのでしょうか。

    それだと、前者でとりあえずトップ表示できるけど、中身に入ったら、URLが全部後者配下になってしまう、という妙なことになりますよね。。。

    • jun said on 2010/07/14 at 15:55

      あと1歩ですね。
      RewriteCond %{REQUEST_FILENAME} !-d
      というのが、ディレクトリが存在しない場合の動作を意味していますので、サブドメイン用のnewcategryディレクトリは実在しなくても問題ありません。

      500エラーということで、エラーログの内容がわかればもう少し絞れる可能性もありますが、まずは以下2点を確認してみてください。
      ・Fancy URLモードになっていること
      ・サブドメイン用の.htaccessの記述で ?virtualpath=newcategry/$1 のnewcategory/の記述が抜けていないこと

      ブログのURLは、http://subdomain.domain.com/ で問題ありません。

  4. もんど said on 2010/07/14 at 23:40

    junさん

    たびたび ありがとうございます。

    .htaccessファイルを最初からつくり直してsubdomainディレクトリに上書きアップしたらうまくいきました。
    「そんなはずは…」と自分を疑ってしまいますが、おそらく何らかの記述間違いをしていたのだと思います。
    上書きしちゃったので、何が間違っていたのか分からなくなってしまいました。(-_-;)

    お騒がせしてすみませんでした。<(_ _;)>

    ちなみに、
    —————-
    ?virtualpath=newcategry/$1
    —————-
    という、カテゴリに関する記述は書き足さなくても大丈夫でした。

    これで、
    例)http://subdomain.domain.com/cattegory1/
    例)http://subdomain.domain.com/cattegory2/
    と、狙い通りにサブドメインをいかした動作が可能になりました。

    専らいままでは、CustomURLを使うことで、複数ブログを、あたかもサイトのカテゴリーとして扱ったようなサイト構築と運用をしてきました。

    今回、複数ブログをメインブログの傘下サイトのように扱った運用が必要になり、こういった質問をさせていただきました。

    丁寧かつ温かいアドバイスをしてくださり、本当にありがとうございました!
    感謝です!

    • jun said on 2010/07/15 at 18:45

      おめでとうございます!
      また何か疑問点などありましたらお気軽にどうぞ。

  5. もんど said on 2011/09/10 at 02:07

    以前、質問させていただいた者です。前回はアドバイスいただきありがとうございました。おかげさまで、そのサイトは思い通りの運営ができています。

    今回は、別のドメインとサーバースペースで、ほぼ同じような運営をしようとして、思うように行かず困っています。

    現状を説明しますと、

    ・Nucleus ver3.61(CustomURLは 0.3.7)
    ・PHP 5
    ・MySQL 5
    ・レンタルサーバー…ロリポップ チカッパプラン

    現在、http://xxx.jp という「独自ドメイン」をロリポップに設定しています。
    そして、その独自ドメインに対して「xxx」というディレクトリを指定しています。
    (一契約に対して複数のドメインを運用するため)

    なので、ロリポップのドメインとしての表記は、
    http://lolipop.jp/xxx/ となっており、

    独自ドメインのパスは
    /home/users/x/lolipop.jp-domain/web/xxx となっています。

    したがってNucleusのパスは
    /home/users/x/lolipop.jp-domain/web/xxx/nucleus です。

    以前質問させていただいたときは、ドメインの設定にディレクトリは指定しておらず、
    nucleusフォルダも「web/」直下に置いていました。
    したがって、前回のNucleusのパスは
    /home/users/x/lolipop.jp-domain/web/nucleus でした。

    つまり、以前は「xxx」というディレクトリがない状態でした。

    この「ドメインにフォルダを設定した」ことが原因なのか、今回は表示が正常にされず行き詰っています。

    ▼今回の手順はこうでした

    ・Nucleusで「otherblog」という新規blogを作成
    ・ロリポップ側で「http://otherblog.xxx.jp」というサブドメインを設定
     → フォルダ名を http://xxx.lolipop.jp/xxx/otherblog と設定
    ・サーバー上に「otherblog」というディレクトリが作成される
     つまり→ /home/users/x/lolipop.jp-domain/web/xxx/otherblog となる
    ・「otherblog」ディレクトリ内に.htaccessとindex.phpを設置

    ところが、
    http://subdomain.xxx.jp にアクセスすると、
    新規blogではなく、デフォルトblogが表示されてしまうのです。
    アドレス欄には「http://subdomain.xxx.jp」とありますが、
    新規blogではなくデフォルトblogを参照してしまっています。

    .htaccessの中身は以下のとおりです。

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

    index.phpは以下のとおりです。

    私としては、パスの問題で「otherblog」の部分がきちんと参照されていないのだろうと思っているのですが、いろいろと書き換えてみたのですが、自分の力不足で改善されませんでした。

    アドバイスをいただけますと助かります。
    どうぞよろしくお願いします。

    • jun said on 2011/09/10 at 16:19

      お久しぶりです。
      最近はNucleusを触る機会も減ってしまい、テスト用の環境も崩してしまったため推測となってしまいますが…
      .htaccessの

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

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

      としてもダメでしょうか。
      この.htaccess設定の意味は、ファイルやディレクトリの実態が無い場合はindex.phpにvirtualpath=otherblog/(アクセスされたURLファイル名)というパラメータを渡すということですので、http://subdomain.xxx.jpへのアクセスは、/home/users/x/lolipop.jp-domain/web/xxx/otherblogの.htaccessにより、index.php?virtualpath=otherblog/へ行きます。
      ここからがNucleusの挙動となるのですが、たしかvirtualpathの扱いはURLのルートパスからの位置だったような気がしています。(デフォルトblogではかなり柔軟にというか、無理矢理でも動いてしまいますが)

      外していたらごめんなさいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL