URL $ _SERVER ['REQUEST_URI']を操作する

This is my url: http://localhost/framework/index.php

echo $_SERVER['REQUEST_URI'];

出力するかどうか:/framework/index.php

しかし、もし私のURLが:

http:// localhost/framework/

出力は次のようになります。

/framework/

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

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

私が持っている場合:

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

私はテスト/テストの部分だけが必要です。

http:// localhost/framework/test/test

私はテスト/テストの部分だけが必要です。

1
私は$ _SERVER変数を見ていましたが、もし私が何かを見つけることができれば、私は幸運なしに、私が望むものを与えることができます。 PATH_INFOには潜在的な可能性がありましたが、Imが本当に探しているものではありません。
追加された 著者 John,
フォルダがある場合はリダイレクトされますか?例えば、css /
追加された 著者 John,
mod_rewrite を使用し、すべてを index.php/your/path に書き換えます。あなたの .htaccessgist.github.com/1320584 のようになります。次に、Daveoのソリューションを安全に使用できます。
追加された 著者 mAu,
そのため、 RewriteCond%{REQUEST_FILENAME}!-dRewriteCond%{REQUEST_FILENAME}!-f したがって、有効なファイルまたはフォルダにアクセスすると、mod_rewriteは何も変更しません。しかし、たとえば http://yourdomain.com/this/is/a/test に行くと、ブラウザのURLバーは http: //yourdomain.com/index.php/this/is/a/test
追加された 著者 mAu,

1 答え

ベースの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);

Edit: mAu's comment above is correct. I was under the assumption you was already using mod rewrite.

4
追加された
index.php がリクエストURIに含まれていない場合はどうでしょうか?
追加された 著者 hakre,
更新されたコード。上記は私にとってうまくいく。スクリプト名は絶対URLに表示されるかどうかにかかわらず有効です。
追加された 著者 Daveo,
@Daveo、答えは良いですが、あなたは質問への答えのより多くの洞察を与えるようにしてくださいできますか? stackoverflow.com/questions/12711371
追加された 著者 harry,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com