5

CI のドキュメントによると、CodeIgniter はセグメントベースのアプローチを使用します。次に例を示します。

example.com/my/group

特定のグループ (id=5) を見つけたい場合は、

example.com/my/group/5

そしてコントローラーで、定義します

function group($id='') {
    ...
    }

ここで、CI が「クエリ文字列」URL と呼ぶ従来のアプローチを使用したいと思います。例:

example.com/my/group?id=5

この URL に直接アクセスすると、404 page not found が表示されます。では、どうすればこれを有効にできますか?

4

10 に答える 10

10

クエリ文字列を確実に使用するには、3つのことを行う必要があることがわかりました

  1. application/config/config.phpセットで$config['enable_query_strings'] = true;
  2. 再びapplication/config/config.phpセットで$config['uri_protocol'] = "PATH_INFO";
  3. .htaccessを変更して?を削除します (存在する場合)書き換えルール

私は以下を使用します

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2010-05-24T15:16:40.420 に答える
6
//Add this method to your (base) controller :
protected function getQueryStringParams() {
    parse_str($_SERVER['QUERY_STRING'], $params);
    return $params;
}


// Example : instagram callback action
public function callback()
{
    $params = $this->getQueryStringParams();
    $code = !empty($params['code']) ? $params['code'] : '';

    if (!empty($code))
    {
        $auth_response = $this->instagram_api->authorize($code);

        // ....  
    }

    // .... handle error
}    
于 2012-05-09T15:28:14.130 に答える
1

これは一部の人々を助けるかもしれません。これをコントローラーのコンストラクターに入れて、コントローラーごとに $_GET を再設定します (たとえば、ほとんどの PHP OAuth ライブラリなど、$_GET に依存するサードパーティのライブラリを統合する場合)。

parse_str(str_replace($_SERVER['QUERY_STRING'],'',$_SERVER['REQUEST_URI']),$_GET);
于 2011-04-29T11:14:06.010 に答える
0

これは実際にテストされ、確認されています

好きな方法で動作します。クエリ文字列と / セグメント アプローチを自由に組み合わせることができます (以前の応答とは対照的に)。

どちらかを使用したい:

example.com/my/group/?id=5

(末尾の / の前に注意してください ?)。また

 example.com/my/group/5 

(ルーターファイル内の URL パターン定義によって異なります)。あるいは

example.com/index.php/?my/group/?id=5

(それは十分に厄介に見えますが)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

codigniter の config/config.php ファイルで、次のように設定します。

$config['uri_protocol'] = 'AUTO';
$config['enable_query_strings'] = TRUE;
于 2014-08-13T09:07:29.220 に答える
0

CodeIgniter はオプションでこの機能をサポートしており、application/config.php ファイルで有効にすることができます。構成ファイルを開くと、次の項目が表示されます。

enter code here $config['enable_query_strings'] = FALSE;

$config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm';

「enable_query_strings」を TRUE に変更すると、この機能がアクティブになります。

于 2012-05-07T07:28:24.650 に答える
0

application/config.php次の行を変更します。

$config['enable_query_strings'] = FALSE;

代わりにこれを true にしてください。他にも注意しなければならない詳細があります。ここを参照してください。

于 2010-05-24T01:15:12.307 に答える
0

config.php ファイルで設定$config['enable_query_strings'] = TRUE;した後、クエリ文字列と組み合わせてセグメントベースのアプローチを使用できますが、次のようにクエリ文字列で2 つ以上の変数 (「&」で区切られている) を使用する場合に限ります

example.com/my/group?id=5&var=something

詳細については、この回答を参照してください。

于 2010-05-24T03:07:49.663 に答える