2

codeigniter ファイルを apache から nginx に移行し、nginx の書き換えを調べています。codeigniter index.php を削除するために、次の書き換えに出くわしました

if (!-e $request_filename)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}

書き換えは機能します。しかし、私はその部分をよく理解していません/index.php?/

アップデート :

のようにクエスチョンマークなしで書き直してみましたrewrite ^/(.*)$ /index.php/$1 last;。通常のコントローラーでは機能しますが、 fb oauth などのサードパーティによって値がコントローラーにポストされると壊れます/controller?code=something

私の質問

1) この書き直しにおける疑問符の役割は何ですか? これはindex.phpをオプションにしますか?

2) また、get リクエストのように、codeigniter は疑問符付きの URL をルーティングしません。たとえば、このような取得リクエスト

http://example.com/controller?code=somecodehere

壊れてコントローラーを呼び出さずに、文字通り呼び出しようとしていますcontroller?code=somecodehere。このルーティングはそれを処理しますが、方法がわかりません。

この書き換えに関する洞察は役に立ちます。

ありがとう。

4

1 に答える 1

1

これは正規表現の一部ではなく、単に書き換えられた URL の疑問符です

それで

abc

になります:

/index.php ? /abc

ご存じのとおりget、php のパラメーターは、URL でクエスチョン マークを付けた後に渡されます。

これで codeigniter inindex.phpは から読み取ることができ$_SERVER['QUERY_STRING']、 を取得し/abcます。これから、適切なコントローラーをロードできます

于 2013-11-05T07:56:32.490 に答える