PC系,Web系,映像系とか。PC無しじゃ生きていけない!?

最新記事

PATH_INFOで拡張子を隠す

ファイル名をディレクトリ名のように
PATH_INFOによるファイル名をディレクトリ名のように見せる方法を紹介します。

通常、以下のような引数を用いてスクリプトに動的な振る舞いを行います。

http://rakuto.net/browse.php?page=path_info

rakutoネットではPATH_INFOを用いて以下のように引数をPATHに組み込んでいます。

http://rakuto.net/browse/path_info/

.htaccess等のHTTPサーバ設定
## PathInfoを有効
AcceptPathInfo On

## HTTPモジュールの場合

ForceType application/x-httpd-php

## CGIの場合

ForceType application/x-httpd-cgi

FilesMatchによりbrowseというファイルのForceTypeがPHPスクリプトである
と宣言しています。
詳しくはApacheのマニュアルを参照してください。

スクリプト側の処理
/**
* パスインフォからページ名を取得
* CGIの場合は$_SERVER['ORIG_PATH_INFO']になります。
*/
$path_info = empty($_SERVER['PATH_INFO'])?”:$_SERVER['PATH_INFO'];

$args = explode(‘/’,$path_info);
// PATH_INFOには’/'から始まるpath情報が入る為、引数は1番目になります。
$page = empty($args[1])?’page’:$args[1];
?>

PATH_INFOを使ったFront Controller
/* パスインフォからページ名を取得 */
$path_info = empty($_SERVER['PATH_INFO'])?”:$_SERVER['PATH_INFO'];

$args = explode(‘/’,$path_info);
$page = empty($args[1])?’tree’:$args[1];

$modules = array(
‘tree’,
‘browse’,
‘post’,
‘search’,
‘summary’
);

/* 不正アクセスがないかチェック */
if (!in_array($page,$module)) {
$page = ‘tree’;
}

/* モジュールの読み込み */
include_once $page.’.php’;
?>

コメント (0)

コメントはまだありません。

コメントのRSSを取得する トラックバック

コメントする

ツイッターでつぶやく