您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“怎么利用Nginx實現URL重定向”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么利用Nginx實現URL重定向”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
老話說的好:取乎上,得其中;取乎中,得其下。因此我們不妨把目標定的高一些,去努力,才能得到更好回報。
我們日常分享一個網站地址時,常常會有這樣的效果,同樣一個網址,在電腦的瀏覽器打開,是一種效果,而在手機的瀏覽器打開,就會展現出另一種更適合手機顯示的效果。
通常要達到這樣的效果,有兩種方式實現:
一、使用自適應的 H5 頁面實現,根據窗口寬度的大小,自動調整頁面的布局。
二、使用Nginx,依據終端的不同,跳轉到不同的頁面,電腦打開,跳轉到 PC端 使用的網頁,手機打開,跳轉到 手機端 使用的網頁。
今天我們介紹一下第二種方式,是如何實現的。
有些 URL 的重定向,新 URL 不需要繼承原 URL 的參數,例如 網站首頁,這種情況,在 Nginx 配置文件的 location 中使用 return 302 的方式進行跳轉即可。
location / { # 判斷是否是移動端 if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) { return 302 https://www.zhuifengren.com/h6/index.html; } proxy_pass http://myUpstream; }
另一種情況就是 新 URL 需要繼承原 URL 的參數,這種情況就需要使用 rewrite 對 URL 進行改寫。
location / { # 判斷是否是移動端 if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) { rewrite (\w+-\w+)|(\?.*)$ https://www.zhuifengren.com/h6-$1-0.html$2 redirect; } proxy_pass http://myUpstream; }
rewrite 的語法是: rewrite 正則表達式 改寫后的URL redirect;
其中 redirect 是 302 臨時重定向的意思,也可以使用 permanent 關鍵字,代表 301 永久重定向。
使用 rewrite 對 URL 進行改寫,需要用到 正則表達式 的知識,改寫后 URL 中的 $1、$2 代表正則表達式中匹配的第一個字符串和第二個字符串,這里大家可以去了解一下正則表達式,就不細說了。
例子中的正則表達式 (\w+-\w+)|(\?.*)$,可以將原 URL:
https://www.zhuifengren.com/1001-1223.jsp?v=123456
改寫為
https://www.zhuifengren.com/h6-1001-1223-0.html?v=123456
location / { if ($args ~* "/product-list?param1=val1&param2=val2") { rewrite ^ http://www.mysite.com/product-list/$arg_param1/$arg_param2? last; } }
if ($arg_path = 'abc'){ proxy_pass http://127.0.0.1/abc/$arg_path; }
特別注意if is evil,nginx不提供多if判斷,沒有or這樣的判斷,所以只能用下文這種方式。
location /api/ { if ($arg_token = '') { proxy_pass http://127.0.0.1/abc } if ($http_token = '') { proxy_pass http://127.0.0.2/abc } if ($token = paraheader) { proxy_pass http://127.0.0.3/abc } proxy_pass http://127.0.0.1:8080/app/; proxy_redirect off; }
讀到這里,這篇“怎么利用Nginx實現URL重定向”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。