- 関連ページ
-
- ページ案内
-
しらぎく日本語URIの設置方法。
しらぎく日本語URIの設置方法について解説します。
しらぎく日本語URIの設置方法・目次。
スクリプトの設置。(平成19年 8月 7日 更新)
スクリプトは、以下の五つとなっております。
- juri.cgi
- juriConfig.pl
- juriMain.pl
- jchar.pl
- juriHook.pl
これらを同一のディレクトリに設置します。
-
先ず、juri.cgi の第一行目のPerlへのパスを指定します。
- mod_perl上で動作させる場合やこのスクリプトの存在を知る者に依るイタズラを防止したい場合には適宜ファイル名を修正して下さい(但し、jchar.pl や juriHook.pl には出来ません。またこれらのファイル名の変更は出来ません)。
-
続いて、juriConfig.pl の設定を行います。
- 第一行目
- Perl へのパスを指定します。
$error
-
文書不在時に403エラー文書を出したい場合には、設置ディレクトリ基準で403エラー文書への相対パスを指定します。
$table_name
-
URL読替表のファイル名を指定します(必須)。
- 配布時には _URITable.txt が指定されておりますが、見られたくない方はもっと分かり難い名前に変更しておきましょう。
- 特に、CGIスクリプトとして指定された拡張子にしておけば、外部からのアクセスがほぼ不可能となります。
$table_encoding
-
URL読替表の文字コードを指定します(必須)。
- 配布時には
shift_jis
が指定されております。
$index
-
ディレクトリ指定時のデフォルトファイル名を指定します(必須)。
- 配布時には
index.html
が指定されております。
$highest_dir
-
アクセス可能な最上位のディレクトリへの相対パスを指定します。
- ここで指定されたディレクトリ外にアクセスしようとすると404エラーになります。
- スクリプト設置パスなどの指定は、サーヴァが用意する環境変数で自動的にパスを判断出来ますので不要となっております。
-
設定が終わったら、適切なディレクトリにスクリプトを設置します。
- この場合、日本語URL化したいディレクトリ内でなくても構いませんが、.htaccessの記述上の制約でルートディレクトリ以下に置く必要があります。
-
設置後、適切に属性(パーミッション)を設定します。
- 通常のCGIとして動作させる場合
-
- juri.cgi 或いは元が juri.cgi だったスクリプト
- 700 推奨。700で動作しない場合は 705, 755 などにして見て下さい。
- jchar.pl 及び juriHook.pl
- 600 推奨。600で動作しない場合は 604, 644 などにして見て下さい。
- mod_perl上で動作させる場合
-
- juri.cgi 或いは元が juri.cgi だったスクリプト
- 705 推奨。動作しない場合は 755 にして見て下さい。
- jchar.pl 及び juriHook.pl
- 604 推奨。動作しない場合は 644 にして見て下さい。
-
ここで、スクリプトが正常に設置されているかどうかを調べます。当該スクリプトをウェブブラウザから開いた際に、スクリプトは正常に動作しておりますまたは文書はありませんと表示される事を確かめて下さい。
スクリプト設置後の準備。
-
続いて、URL読替表を作成して、読み替えたいディレクトリに設置します。
- 設置されないディレクトリ直下の文書や子ディレクトリは読替が行われませんが、動作に支障は生じる事はございません。
-
最後に、設置したスクリプトを起動出来るように、.htaccess の設定を行います。
- 設置箇所はURLの読替を行いたいサイトの最上位ディレクトリ直下となります。
動作の確認。
準備が終わったら、正常に動作するかどうかを確認して下さい。
ウェブブラウザから、URL読替を行いたいURL(従来のアスキィ文字のURL)を入力してみます。
巧く行くようでしたら、今度はウェブブラウザから日本語でパス名を入力してみます。
トラブルシューティング。
このスクリプトはかなり複雑な動作をするので、設置後正常に動作しない場合事も予想されます。
- Not Found エラーが出た
-
入力したURLそのものが間違っているか、.htaccess の設定で指定したスクリプトへのパスが正しくない事が考えられます。
- どちらが原因か判断出来ない場合には、
$error
の設定を空文字列にして見て下さい。URLが防いである事が原因であれば、文書はありません と言うエラーメッセージが表示されます。
- Internal Server Error エラーが出た
-
.htaccess の設定が正しくない事が考えられます。
または、mod_rewrite がサポートされていない事も考えられます。
この他、Perlの実装に問題がある事も考えられます。
- Fcntl モジュールを use文で呼び出して使っております。動作しない場合には、juri.cgi の冒頭にある
use strict;
, use Fcntl;
, 及び $O_RDONLY=O_RDONLY;
の各三行の前にそれぞれ #
を付けてコメントアウトして下さい。
- URLが読み替えられない
-
URL読替表に問題があると考えられます。
- コンテンツ収納ディレクトリにURL読替表が設置されていない、
- URL読替表のファイル名が正しくない、
- URL読替表での読替対象が正しく記述されていない、または読替元と読替後の記述が逆になっている
などの問題が考えられます。
- 予定していたものと違うページが表示された
-
URL読替表に問題があると考えられます。
などの問題が考えられます。
尚、修正してリトライする場合は、ブラウザのキャッシュをクリアしてから行って下さい。
- このスクリプトが配信するコンテンツはブラウザにキャッシュされるようにしてあるからです。
mod_perl上で動作させる方へ。(平成19年 8月 7日 更新)
- mod_perl上で動作させたい場合には、まず通常のCGIとして動作させてみて問題が無い事を確かめてからmod_perl上でのスクリプトに変更して下さい。
- また、HTTP応答ヘッダを必ず出力するようにして下さい。すなわち、.htaccessの mod_perl 関連の設定箇所にて
PerlSendHeader On
ディレクティヴを必ず記述して下さい。(平成19年 8月 7日)
- 尚、スクリプトでは内部のアクセスには全て絶対パスを使っておりますので、mod_perl上でも誤作動する心配はございません。(平成19年 8月 7日)