自動電商平台歸屬了大資料研究院之後,我又恢複了那個“把nginx當成爸爸”的日子。開發不斷地提出了的要求,我一樣一樣的疲命應付,并且在應付後記錄下來,就怕以後再遇到類似的問題。
這次的需求是一個跳轉,滿足某個條件之後把<code>“http://dvlshop.lechange.com/index.php/wap/?client_id=lc_mall_m&redirect_uri=https%3A%2F%2Fdvlshop.lechange.com%2Fopenapi%2Ftrustlogin_api%2Fparse%2Fwap_trustlogin_lecheng%2Fcallback&response_type=code&scope=read&state=http%3A%2F%2Fdvlshop.lechange.com%2Findex.php%2Fwap&user=token%2Flcid_9f9lmo2u6i7hkl6t6eaodn2blmg5jbsg&expire=1514191636&source_type=lc_app&nonce=cdizHO6uvSx5JK79Kmtz5RBpSi0ROhpF&signature=VeCceYCWDE6BZjIdni/68YCmhqc=%27 ”</code>
改成
<code>“http://dvlshop.lechange.com/index.php/wap/?client_id=lc_mall_m&redirect_uri=https%3A%2F%2Fdvlshop.lechange.com%2Fopenapi%2Ftrustlogin_api%2Fparse%2Fwap_trustlogin_lecheng%2Fcallback&=code&scope=read&state=http%3A%2F%2Fdvlshop.lechange.com%2Findex.php%2Fwap&user=token%2Flcid_9f9lmo2u6i7hkl6t6eaodn2blmg5jbsg&expire=1514191636&source_type=lc_app&nonce=cdizHO6uvSx5JK79Kmtz5RBpSi0ROhpF&signature=VeCceYCWDE6BZjIdni/68YCmhqc=%27”</code>
具體條件是:
先判斷是否有source_type=lc_app;
再判斷是否有response_type;
如果以上兩個都滿足,将“response_type”改成“+auto+”;
各位看官,我了解你們此時不想繼續看下去的心情,其實我當初看着那麼一大坨uri心裡也直犯鬧,但是沒辦法,“食君之祿,分君之憂”,我隻能耐着性子一個一個的拆開,還别說,拆開的話就清晰許多了,如下:
client_id=lc_mall_m&
redirect_uri=https%3A%2F%2Fdvlshop.lechange.com%2Fopenapi%2Ftrustlogin_api%2Fparse%2Fwap_trustlogin_lecheng%2Fcallback&
response_type=code& <code>#滿足條件的話把這個改成+auto+</code>
scope=read&
state=http%3A%2F%2Fdvlshop.lechange.com%2Findex.php%2Fwap&
user=token%2Flcid_9f9lmo2u6i7hkl6t6eaodn2blmg5jbsg&
expire=1514191636&
source_type=lc_app&
nonce=cdizHO6uvSx5JK79Kmtz5RBpSi0ROhpF&signature=VeCceYCWDE6BZjIdni/68YCmhqc=%27
針對這次需求我的計劃是這樣的:把原位址看成"$1+ response_type +$2"這樣的一個樣式,确定$1和$2,然後rewrite成"$1+ +auto+ +$2"不就搞定了麼? 于是乎我就憑着我那二把刀的nginx技術開始動手。折騰了大約半個小時,拿出來這樣一個配置:
但是很不幸,<code>nginx -s reload</code>之後的結果是“$1+$2+$1+ response_type +$2”的格式(位址太長太惡心了,我就不寫了)。
然後在arstercz大神的指點下,把那句rewrite改成了<code>return 301 http://dvlshop.lechange.com/index.php/wap/?$id$query;</code>。就達到了效果。
要麼就
PS,這裡補充一下uri、request_uri、document_uri之間的差別:
$request_uri: /stat.php?id=1585378&web_id=1585378
$uri: /stat.php (不帶?後面)
$document_uri: /stat.php (與uri完全相同)
最後的最後,如果您覺得本文對您升職加薪有幫助,那麼請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!

本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/2059740