伺服器:Win2003 + IIS 無問題運作正常
本機:Win10 + apache 和 Win10 + nginx 無問題運作正常
計畫最近更換了阿里雲CentOS7.2,nginx1.10.2;出現了問題。
頁面當中有Form表單用於搜索,搜尋用的get數據,點選按鈕後形成如下URL
<code>/index.php/User/index.html?key=刘</code>
我在控制器中用I('key')(TP封裝的取得輸入變數的方式類似$_GET['key'])的方式取得這個關鍵字,然後進行查詢分頁;頁碼連結產生類似如下URL
<code>/index.php/User/index/key/刘/p/2.html</code>
當點擊上面頁碼連結翻頁的時候:
在本地和原來的伺服器無論怎麼取得這個get過來的key 都是 string "劉"
但是在新的伺服器上,取得到的關鍵字是 string "%e5%88%98"
這就導致了我原本的程式所有帶這種搜尋的都失效了,都不能翻頁。
I('key')獲取這個get數據的時候urldecode一下,但是我發現,只能翻一頁,再犯,這key就被又一次的urlencode了,翻多少次就被無限的urlencode
由於不能修改url模式,所以這個方式我也放棄了
Win+IIS Win+nginx 都沒問題,為什麼到linux+nginx會產生這種問題,這到底是我的鍋,還是linux的鍋,還是nginx的鍋求指教。
專案恢復正常很急切,請各位大神幫忙解答
伺服器:Win2003 + IIS 無問題運作正常
本機:Win10 + apache 和 Win10 + nginx 無問題運作正常
計畫最近更換了阿里雲CentOS7.2,nginx1.10.2;出現了問題。
頁面當中有Form表單用於搜索,搜索用的get數據,點擊按鈕後形成如下URL
<code>/index.php/User/index.html?key=刘</code>
我在控制器中用I('key')(TP封裝的取得輸入變數的方式類似$_GET['key'])的方式取得這個關鍵字,然後進行查詢分頁;頁碼連結產生類似如下URL
<code>/index.php/User/index/key/刘/p/2.html</code>
當點擊上面頁碼連結翻頁的時候:
在本地和原來的伺服器無論怎麼取得這個get過來的key 都是 string "劉"
但是在新的伺服器上,取得到的關鍵字是 string "%e5%88%98"
這就導致了我原本的程式所有帶這種搜尋的都失效了,都不能翻頁。
I('key')獲取這個get數據的時候urldecode一下,但是我發現,只能翻一頁,再犯,這key就被又一次的urlencode了,翻多少次就被無限的urlencode
由於不能修改url模式,所以這個方式我也放棄了
Win+IIS Win+nginx 都沒問題,為什麼到linux+nginx會產生這種問題,這到底是我的鍋,還是linux的鍋,還是nginx的鍋求指教。
專案恢復正常很急切,請各位大神幫忙解答
TP分頁的源碼中產生url的時候有進行urlencode操作
<code>private function url($page){ return str_replace(urlencode('[PAGE]'), $page, $this->url); }</code>
解決方法 可以在實例化分頁類別的時候把搜尋參數當作第三個參數傳入 具體可查看Page類別的建構方法