rnote.phpの隠蔽

 Apache には、mod_rewrite という、要求されたurlをルールに従ってリアルタイムで書き換える事の出来る、非常に強力なモジュールがあります。
 rNote はhtmlの静的生成は出来ませんが、mod_rewrite の機能を利用する事で、rnote.php の隠蔽を行い、html が静的生成されてるように見せかけることが出来ます。
 rNoteを使用する上で絶対に必要という訳ではありませんが、各エントリを通常のhtmlファイルのように見せかけることが出来るというメリットがあり、また、これによりサーチエンジンに登録されやすくなります。

> http://your.site.jp/diary/20040101.htm

 上記のような url が要求された場合、以下のような url に変換し rnote.php が実行されます。

> http://your.site.jp/rnote.php?u=diary/20040101.htm

 設定方法ですが、以下のような内容を .htaccess に記述してください。
 ちなみに、行頭の数字は説明の為に付加したものであり、.htaccessに記述する必要はありません。

01: RedirectMatch 301 ^([^.]*[^/])$ $0/
02: DirectoryIndex rnote.php
03:
04: RewriteEngine on
05: RewriteRule ^(index\.html?)$ rnote.php [L]
06: RewriteRule ^(.+\.htm)$ rnote.php?u=$1&%{QUERY_STRING} [L]
07: RewriteRule ^(.+/)$ rnote.php?u=$1&%{QUERY_STRING} [L]

 1行目のRedirectMatchは、http://your.site.jp/diary というようなアドレスでアクセスされた時、http://your.site.jp/diary/ (最後に / を付加)へリダイレクトする設定です。
 (※参考記事:続・最後の「/」が省略される検索サイト対策

 2行目のDirectoryIndexは、例えば http://your.site.jp/ という url がアクセスされた時、通常であれば index.html が表示されますが、これを rnote.php が表示されるようにする設定です。
 もし、いきなり rNote が動作するのではなく、従来通り入り口ページとして index.html を表示させたい、という場合はこの設定は不要です。

 4行目以降が mod_rewrite の設定となります。

 5行目は http://your.site.jp/index.html 又は 同index.htm でアクセスされた時、rnote.php をオプション無しで起動するという設定です。入り口ページとしての index.html が存在する場合は不要です。

 6行目及び7行目は、.htm という拡張子、又はディレクトリ(最後が/で終わってる)の場合、rnote.php を実行させるという設定です。
 rNote の文書は拡張子 .htm でアクセス、mod_rewrite を通さずそのまま表示したい html ドキュメントは拡張子を .html にする…という使い分けを想定しています。

 アドレスが http://your.site.jp/~hoge/ という形式の方の場合は、以下のように RewriteBase の行を追加してみてください。

04: RewriteEngine on
05: RewriteBase /~hoge
06: RewriteRule ^(index\.html?)$ rnote.php [L]
07: RewriteRule ^(.+\.htm)$ rnote.php?u=$1&%{QUERY_STRING} [L]
08: RewriteRule ^(.+/)$ rnote.php?u=$1&%{QUERY_STRING} [L]

 なお、mod_rewrite 自体は非常に高機能なモジュールであり、記述方法を解説するとそれだけで本が一冊書けてしまう程ですので、申し訳ありませんが、細かい記述方法についてはここでは説明せず、他に譲りたいと思います。詳しい仕様が知りたい方は、各自で調べてみてください。


PHPの設定

phpの設定

 rNoteはphpがどんな設定であっても、大抵は問題なく動くように設計してあります。が、設定によっては、余計なオーバーヘッドがあったり、セキュリティ的に問題があったりしますので、以下のような設定で動作させる事を推奨します。

<IfModule mod_php4.c>
php_flag register_globals Off
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
</IfModule>

 上記のような記述を、.htaccess に記述してください。

 まず、register_globals についてですが、これが Off だと過去のプログラムが動かない事が多いので、多くのサーバーでは On になってますが、On だとセキュリティ上の問題がありますので、Offにしておく事を推奨します。
 なお、自前サーバーの方であっても、これを On にしてしまうと、他の php のプログラムが動作しなくなる場合がありますので、php.ini で設定するのではなく、.htaccess で rNote のディレクトリに対してだけ設定するようにした方が良いでしょう。

 magic_quotes_gpc は、まぁどちらでも良いと言えばどっちでも良いのですが、一応、Off の方が、ほんのちょっとだけ処理が減ります。

 magic_quotes_runtime は、実を言えばプログラム内部で set_magic_quotes_runtime(false); を行っているので、設定はどっちであっても余り関係が無いのですが、まぁ一応 Off と言う事で。

フォーム入力の文字化け対策

 ページの内容が文字化けする場合は、ファイルの文字コードが SITE_CHARSET(ディフォルトではUTF-8)と違うコードでセーブされている事が原因かと思われます。該当記事又はスキンの文字コードを確認し、セーブし直してみてください。

 さて、php の設定によっては、ツッコミの書き込みなど、フォーム入力の文字が化けてしまう場合があります。このような場合、.htaccess で以下のような設定を行ってみてください。

<IfModule mod_php4.c>
php_value default_charset UTF-8
php_value mbstring.language Japanese
php_value mbstring.detect_order auto
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.internal_encoding UTF-8
php_value mbstring.substitute_character none
php_value mbstring.func_overload "0"
php_flag mbstring.encoding_translation Off
</IfModule>

 phpでのフォーム入力の文字化けの原因は、大抵の場合、文字コードの自動判別及び変換の失敗に起因します。従って、まずエンコードをUTF-8に設定し(初期設定の SITE_CHARSET をUTF-8 以外に変更した場合は、それに合わせる必要があります)、後は出来るだけ余計な事(自動判別や自動変換)を何もしない…という方針です。

 なお、この設定は、日本の標準的な php の設定とはかなり違っています。従って、自前サーバーで動作させている方でも、php.ini で設定を行うのではなく、.htaccess で rNote のディレクトリに対してのみ設定を行うようにした方が無難でしょう。

 レンタルサーバーなどの方で .htaccess による設定変更が許可されてなく、どうしてもツッコミなどが文字化けしてしまう…という場合は、初期設定の FORM_CONVENC_AUTO を true にしてください。文字コードの自動判別及び変換を行うようになります。

 但し、自動判別は入力された文字数が少ない時、判別に失敗して逆に文字化けを起こす場合があります。FORM_CONVENC_AUTO は false のままにしておき、なるべくサーバーの設定で対処する事を推奨します。


RSSのMIME TYPE設定

 .rdf という拡張子に対して MIME TYPE が設定されていないサーバーの場合、そのままですとRSSリーダーによっては正常に読めない場合があります。そのような場合は、以下のような一行を .htaccess に追加してください。

> AddType text/xml .rdf

 ちなみに、本来は「application/rdf+xml」の方が正しいみたいですが、これだとアプリケーションによってはXML形式のファイルとして認識出来ない場合もあり、現状ではまだ「text/xml」の方が良い、との事みたいです。

 なお、.htaccess による設定が出来ないという環境の方の場合、単純にRSSのファイル名を rss.xml 等、拡張子を「.xml」に変更するという方法でも可です。


セキュリティ対策

 entries 以下のディレクトリは、ツッコミ等のログも記録される関係上、(777) で作成しておく必要があります。が、これはセキュリティ的に一番弱い設定です。そこで、何らかの対策を立てておく必要があるかと思われます。

 以下のような内容の .htaccess ファイルを作成し、これを entries ディレクトリに置いておくと良いでしょう。

Options none
deny from all

 これにより、Web 経由での entries ディレクトリへのアクセスは一切行われなくなります。

 この場合、ページで使う画像等が entries ディレクトリ以下にあった場合、当然ですが表示は行われなくなります。画像等は entries 以下には置かないようしましょう。
 スキンファイル等、rnote.php が内部で使用するファイルに関しては、web 経由のアクセスではありませんので、entries ディレクトリ以下に置いておいても問題はありません。


rNote

official support page

about

setup

outline

reference

tips

downloads

links

bbs

Copyright ©Woody-Rinn All rights reserved. http://rinn.e-site.jp/

Powered by rNote 0.9.7.5