さくらインターネットにnucleus(blog系CMS)でfancyURLを使う方法を考えてみる

MySQL5, blog, Apache, nucleus, Tools, DokuWiki, さくらインターネット

08:20:53, by dozo Email , 324 words, 7529 views   Japanese (JP) del.icio.us

CGI版PHPに癖があるのか。。。
Apacheモジュール版PHPの癖になれてしまったのか。。。
あるいは両方とも癖があるのか。。。



一番最後に1000点!!

(ノ・・)ン。。。。。。(((●コロコロッ

こんな感じでバカにされながらも使われる不思議な言語がPHPです。
それはさておき。

blog系CMSnucleusをさくらインターネット上で使おうと言うことになり、
さっそくインストールを敢行しました。
特別問題なくインストールも終了。
動作自体も問題なし!!


カイチョウカイチョウ(・∀・)


どうせならfancyURLモードも使えるようにしたいので、
設定をさくさく進める。

・・・アレ?(・ω・)
ファイルがダウンロードされた。
ムム?いやな予感。
やめた方が良いのかなとしばらく放置。

その後、時間が出来たのでやっぱりfancyURLを使いたくて設定を再開。
その時の設定内容をちょっとメモ。
最終的には
.htaccess
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?pathinfo=$1 [QSA,L]
index.php
<?php
// This file will generate and return the main page of the site
if( isset($_GET["pathinfo"] ) ){
$_SERVER["PATH_INFO"] = $_GET["pathinfo"] ;
}

$CONF = array();
$CONF['Self'] = '';

include('./config.php');

selector();

?>


RewriteBaseは環境によって変更が必要。
「pathinfo」の文字は実際は何らかの文字列をmd5した結果を使っている。
item, categoryなどfancyURLで使用するファイル類は不要。
管理画面の設定をfancyURLモードにすればOK.

[More:]




さて、nucleus使ってない人にとってはfancyURLってなんのコッチャって感じだろう。
Fancy URLモードとは?
Nucleusではバージョン2.0からグローバル設定において「URLモード」というオプションを設けています。ここを「FancyURLモード」に設定して以下の作業を行うと、URLが「http://example.org/index.php?itemid=1234」から「http://example.org/item/1234」に変わります。このURL形式の方が検索エンジンに登録されやすくなります。

「Fancy URL」名前から大体想像が付くかもしれないが、
/index.php?item=1よりも/index.php/item/1というURIの方が検索エンジンに優しいわけです。
nucleusにはこの変換機能が標準搭載されていて、
設定をちょこっと弄るとサクッと使えたりする・・・ごめん。嘘。
設定をちょこっと変えてファイルをコピってなどすれば出来るわけです。



手順を調べてみると最初にヒットしたのがこのページ、

NucleusでFancyURLを使う方法
http://faq.sakura.ne.jp/wiki/wiki.cgi?cgi%A4%C8php#i13

■ .htaccess の変更
ForceType application/x-httpd-php は
ForceType application/x-httpd-cgi に変更

■ extra/fancyurls/* の変更
・先頭に "#! /usr/local/bin/php" の追加
・serverVar('PATH_INFO') を serverVar('ORIG_PATH_INFO') に変更
でrootにコピー(実行属性付けてね)
(※ fancyurls.config.phpは先頭にパスを追加しない)
・include('./ を include(' に変更 ( ./ を消す)

■ php.ini の編集
cgi.force_redirect=0
cgi.fix_pathinfo=1

■ libs/globalfunctions.php の変更
・262行目あたりの、
serverVar('PATH_INFO') を serverVar('ORIG_PATH_INFO') に変更
サイトのrootじゃなくてNucleus配下に専用の.htaccessやphp.iniを置くのが良い

※NP_CustomURLの導入も検討されたし。上記のような面倒なことをしなくても一発でスラッシュ区切りのURLにできる。


・・・(゜Д゜)ナンダコレ

手順が多すぎる上、HACKまで必要なのか。

さくらインターネットはCGI版のPHP。
CGI版で一番やっかいなのがPATH_INFOの挙動。
以前pukiwikiでURLを綺麗にしようと試みたが、
かなり苦戦を強いられた。
CGI版でPATH_INFOを使う時は以下の設定をphp.iniに追加しておかなければならない。
cgi.fix_pathinfo = 1
cgi.force_redirect =0

このcgi.force_redirectディレクティブはセキュリティーを確保するために存在する物であって、
本来変更すべきではないものだ。
なのでこれを使用する方法はやめておこう。



となると使うのはApacheのmod_rewriteなのだが、

Nucleus - NP_CustomURL 通常サイトのような「普通のURL」を実現!
http://kyms.ne.jp/item_142.html
チョー簡単な FancyURL 実現方法
http://shizuki.kinezumi.net/item_278.html

index.php の $CONF['Self'] を、説明にあるとおり 「''」にして、
(index.phpの記述を$CONF['Self'] = '';に変更する)
グローバル設定でモードを Fancy にする
で、.htaccess に

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

なるほど。一般的なマウントポイントの設定でも行けるのか。
以前試してダメだったのはCONFの設定をしてなかったからかもしれない。

エイヤ!!(・∀・)

Internal Server Error


アレ?(・ω・)

あっRewriteBaseが無いのか。
Apache1.3は面倒くさいなぁ。

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


モッカイ!!(・∀・)

No input file specified.


オヤ?(・ω・)

なんだろ。これ。
なんど試してもこうでる。
/index.php/item/94
の形式だったらアクセスできるが、
/item/94
にするとダメっぽい。
調べてみるとCGI版のPHPではこうなるらしい。

( ̄-  ̄ ) ココマデカナァ

ん?そういえば、dokuwikiをインストールした時はちゃんと動いてたな。
そのあたりも吸収しているのかも。
それを参考に設定を変えてみる。
.htaccess
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?pathinfo=$1 [QSA,L]
<?php
// This file will generate and return the main page of the site
if( isset($_GET["pathinfo"] ) ){
$_SERVER["PATH_INFO"] = $_GET["pathinfo"] ;
}

$CONF = array();
$CONF['Self'] = '';

include('./config.php');

selector();

?>


ウゴイタヽ(^0^)ノ
何らかのエスケープは必要かもしれないが、
そのぐらいは内部でやってるだろ。。。たぶん。


マウントポイントだけ別にして、
別ドメインの運用とかやってみたが、
ちゃんと動いているようだ。



nucleus最高!!

Trackback address for this post:

http://hain.jp/htsrv/trackback.php/146

Comments, Trackbacks:

No Comments/Trackbacks for this post yet...

Leave a comment:

Your email address will not be displayed on this site.
Your URL will be displayed.

Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
(Line breaks become <br />)
(Set cookies for name, email and url)
(Allow users to contact you through a message form (your email will NOT be displayed.))
This is a captcha-picture. It is used to prevent mass-access by robots.

Please enter the characters from the image above. (case insensitive)

powered by b2evolution

shinobi

Neighbors
Relative
Favorites

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!