2011-10-27 14 views
1

を操作します

/framework/ 

ファイルを移動すると、あなたはそのアイデアを得ます。

フォルダ/最終的にindex.phpファイルの後にコンテンツを取得するにはどうすればよいですか?私の考えは、フロントコントローラとしてindex.phpを持つことです。

私が持っている場合:

http://localhost/framework/index.php/test/test

私は唯一のテスト/テスト部品が欲しいです。

http://localhost/framework/test/test

私は唯一のテスト/テスト部品が欲しいです。

+0

私は$ _SERVER変数も見ていますが、もし私が欲しいものを私に与えることができれば、運がなくても見つかります。 PATH_INFOには潜在的な可能性がありましたが、Imが本当に探しているものではありません。 – John

+1

'mod_rewrite'を使って全てを' index.php/your/path'に書き換えます。あなたの '.htaccess'は、https://gist.github.com/1320584のようになります。次に、Daveoのソリューションを安全に使用できます。 – mAu

+0

フォルダがある場合はリダイレクトされますか? css/ – John

答えて

4

ベースuriを自動的に検出して削除して、テスト/テストパートを残すことができます。

if(!empty($_SERVER['PATH_INFO'])) 
{ 
    // Uri info does not contain docroot or index 
    $uri = $_SERVER['PATH_INFO']; 
} 
else 
{ 
    if(!empty($_SERVER['REQUEST_URI']) && !empty($_SERVER['HTTP_HOST'])) 
    { 
     $fullUrl = 'http://' 
        . ((isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : '') 
        . ((isset($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : ''); 

     $uri = parse_url($fullUrl, PHP_URL_PATH); 
    } 
    else if(!empty($_SERVER['PHP_SELF'])) 
    { 
     $uri = $_SERVER['PHP_SELF']; 
    } 
} 

$baseUri = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1); 
$uri = str_replace($baseUri, '', $uri); 

編集:上記MAUさんのコメントが正しいです。私はmod rewriteを既に使用していたという仮定の下にいました。

+0

'' index.php'がリクエストURIの一部ではない場合は? – hakre

+0

コードを更新しました。上記は私にとってうまくいく。スクリプト名は絶対URLに表示されるかどうかにかかわらず有効です。 – Daveo

+0

@Daveo、答えは良いです、あなたは質問への答えのより多くの洞察力を与えるようにしてくださいできますかhttp://stackoverflow.com/questions/12711371 – harry

関連する問題