まず、NginxのURL書き換えメソッドを使用しました。
enable_query_strings をオンにする
オンにする方法は非常に簡単です: application/config/config.php で設定します:
$config['enable_query_strings'] = FALSE;
CI 開発プロジェクトで使用される PATH_INFO モードは次のとおりです。 Nginx 構成で URL を書き換えるには、CI 構成ファイルで文字列クエリを有効にし、URL 形式での変更を比較する必要があります:
URL: www.xxx.com/user/profile 文字列クエリ モード: www. xxx.com /index.php?c=user&m=profile
特定のルールに従ってフロントエンドとバックエンドの URL を書き換えた後、テストは OK になりました。しかし、文字列クエリを有効にした後に生成されたページング URL アドレスが変更されたため、ページング時に問題が発生します:
無効: /user/list/10 文字列クエリを有効にした後: /user/list&per_page=10
次の間違った URL が表示されるのは、ページネーションを生成するときに、base_url 形式が変更されていないためです。そのため、/user/list から対応する /index.php?c=user&m=list に変更すると、次の状況になります。 2 ページ目: www.xxx.com/index.php?c=user&m=list&per_page=10 3 ページ目: www.xxx.com/index.php?c=user&m=list&per_page=20 4 ページ目: www.xxx .com /index.php?c=user&m=list&per_page=30
そして、設定したページサイズは常に 10 なので、per_page は常に 10 である必要があります。 Pagination クラスのコードを調べたところ、per_page が query_string_segment のデフォルト値にすぎないことがわかりました。per_page パラメーターだと勘違いしていました。
ページングはリライトと互換性があります
要約すると、ページングがリライトと互換性がある場合は、ページングを生成するときに Base_url パラメーターを変更します:
方法 1: /index.php?c=user&m=list、結果は次のようになります。 /index.php?c=user&m=list&per_page=10 方法 2: /user/list?、結果は次のようになります: /user/list?&per_page=10
ページング SQL は次のとおりです:
$this->db- > ;limit($pagesize, $this->input->get('per_page'));
URL の一貫性を維持するために、後から不要なパラメータを追加することもできます。結果は /user/list?x=xxx&per_page=10 になります。ページネーションについて
ディスカッション
します。もちろん、CI 付属のページングを使用したり、Pagination.php を変更したりすることもできません。
それがメソッドのパラメータとして渡される場合、/user/arg1/arg2/arg3 などの通常の URL は、書き換え中に渡すことはできません (少なくとも、私はまだ解決策を見つけていません)。解決策は、パラメーターが GET モードで渡されない限り、プログラムの変更が必要になるため、お勧めできません。
そして、リライトを使用するには、さまざまな形式の URL をターゲットにする必要があり、プロジェクトが複雑な場合は負担になるため、別の方法を探しました。Nginx に PATH_INFO を fastcgi に渡すようにします。次の記事を参照してください。
上記は Nginx 設定 CodeIgniter プロジェクト (1) の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。