PHP・Perlともに、かなり大ざっぱな説明ですので、最終的にはご自分でよく調べた上で変更して下さい。
まずは、ご利用のサーバがPATH_INFOに対応しているかどうかを調べて下さい。
<?php
$PATH_INFO = $_SERVER['PATH_INFO'];
list(,$aa,$bb,$cc,$dd) = explode("/", $PATH_INFO);
echo $PATH_INFO."<br>";
echo "aa → " .$aa. "<br>";
echo "bb → " .$bb. "<br>";
echo "cc → " .$cc. "<br>";
echo "dd → " .$dd. "<br>";
exit;
?>
|
|
↑これをこのままコピーペーストして適当な名前(pathinfo.phpなど)で保存後、サーバに転送します。
次に、そこにアクセスします。
例えば、
http://xxx.xxx.xxx/pathinfo.php
↑ここに転送した場合、
http://xxx.xxx.xxx/pathinfo.php/111/222/333/444/
↑このように /(スラッシュ)で適当に区切った文字を付け加えてアクセスして下さい。(文字は何でも構いません)
その結果
/111/222/333/444/
aa →111
bb →222
cc →333
dd →444
|
|
このように表示されれば、PATH_INFOが使えるサーバです。
http://cgi.bookstudio.com/path_info/pathinfo.php/111/222/333/444/
↑これは、実際のものです。
PHPの場合は、list(,$xx,$xxx,$xxxx) = explode("/", $PATH_INFO); 基本的にこれだけで、あとは
これまでの
http://xxx.xxx.xxx/xxx.php?xx=**&xxx=***&xxxx=****
↑このようなURLを
http://xxx.xxx.xxx/xxx.php/**/***/****/
↑こうするだけです。
他には、これまで相対URLでしていたリンクを絶対URLにするなどの、こまごまとした変更点はありますが、
そのあたりはご自分でテストを行って下さい。
Perlは、よく知りませんので、上のPHPよりも更に適当な説明です。
ここを読んでそのまま貼りつけても動かないかもしれません。
例として使用する掲示板はKENT WEBさんの Web Forum です。
wf_init.cgiの中に# デコード処理 #という部分があります。
そこの
$mode = $in{'mode'};
$page = $in{'page'};
↑このようになっているあたりを
$buf = $ENV{'PATH_INFO'};
$buf = substr($buf,1);
($_mode,$_no,$_reno,$_oya,$_page,$_list) = split(/\//,$buf);
if($_mode){$mode = $_mode;}
・
・
・
↑このような感じに変更します。(「ような感じ」などと曖昧ですが、いろいろ試して下さい)
次にwforum.cgiの中の
$script?no=$no&reno=$reno&oya=$oya&mode=msgview&page=$page
↑このような部分をすべて
http://xxx.xxx.xxxx/xxxxx/wforum.cgi/msgview/$no/$reno/$oya/$page/
↑このように変更します。
&(?)から = までを、それぞれ / に変えます。
テストでは、上記の変更で動きましたが、サーバによって違うと思います。
また、本格的に稼働させる場合、上のような適当な変更では、使いものにならないと思いますので、
十分にテストを行って下さい。
|
|