首頁 >php教程 >PHP开发 >Nginx配置CodeIgniter計畫(一)

Nginx配置CodeIgniter計畫(一)

黄舟
黄舟原創
2016-12-20 12:01:362006瀏覽

首先我使用的是Nginx的URL rewrite的方法。

開啟enable_query_strings

開啟方法很簡單:在application/config/config.php設定:

$config['enable_query_strings'] = FALSE;

在專案中使用的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之後就會變成下面情況:

第二頁:www.xxx.com/index.php?c=user&m=list&per_page=10 第三頁:www.xxx.com/index.php?c=user&m=list&per_page=20 第四頁:www.xxx .com/index.php?c=user&m=list&per_page=30

而我設定的pagesize一直都是10,這樣的話per_page應該一直是10的。去看Pagination這個類別的程式碼,發現per_page只是query_string_segment的預設值,我誤以為是per_page這個參數了。

分頁相容rewrite

總結一下分頁這塊如果要相容rewrite的寫法,那麼就在生成分頁的時候改變一下base_url參數:

方法一:/index.php?c=user&m=list,結果是: /index.php?c=user&m=list&per_page=10 方法二:/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改一改。

如果是作為method的一個參數傳遞的時候,正常URL如:/user/arg1/arg2/arg3,那麼在rewrite的時候就沒法傳遞過去了(至少我還沒找到解決的方法),要想解決除非把參數變成GET方式傳遞,這就要改變程式了,所以不建議。

而且使用rewrite就要針對不同形式的URL,如果專案很複雜的話就成了累贅,所以就尋求另外一種方法:讓Nginx把PATH_INFO傳遞給fastcgi,請看下一篇文章吧。

 以上就是Nginx配置CodeIgniter專案(一)的內容,更多相關內容請關注PHP中文網(www.php.cn)! 

🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn