<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          B 站面試官:“啥是重定向?”

          共 2640字,需瀏覽 6分鐘

           ·

          2021-04-27 10:03

          三分鐘,帶你學(xué)習(xí)和實(shí)踐域名重定向

          大家好,我是魚皮,今天分享 重定向 小知識(shí),以及我在騰訊云云開發(fā)中實(shí)現(xiàn)域名重定向的實(shí)踐。

          孽起

          之前,我開發(fā)了一個(gè)編程導(dǎo)航網(wǎng)站,將網(wǎng)站放到了騰訊云云開發(fā)上,用云托管(容器)的方式部署和維護(hù)。還購買了一個(gè)域名 code-nav.cn,并且在云開發(fā)后臺(tái) 訪問服務(wù) 中,將該域名的子域名 www.code-nav.cn 和存放網(wǎng)站文件的容器相關(guān)聯(lián),配置如圖:

          云開發(fā)網(wǎng)站訪問配置

          然后,大家就能通過網(wǎng)址 www.code-nav.cn 訪問該網(wǎng)站了。

          訪問網(wǎng)站

          但是,很快,我就發(fā)現(xiàn)了一個(gè)嚴(yán)重的問題。

          有不少同學(xué)想要訪問我的網(wǎng)站,但是,由于他們輸入的網(wǎng)址是 code-nav.cn,省略了網(wǎng)址前綴 www,導(dǎo)致網(wǎng)站無法訪問。也讓我流失了一批用戶。

          ###初戰(zhàn) —— 域名配置

          要解決這個(gè)問題,其實(shí)很簡(jiǎn)單,之前是配置 www 子域名指向容器,那在云開發(fā)后臺(tái)再加一條配置,直接將購買的域名(父域名)code-nav.cn 也指向容器,不就成了么?

          配置如下:

          云開發(fā)網(wǎng)站訪問配置

          這樣,無論用戶是否輸入 www 前綴,都能夠訪問到我們的網(wǎng)站啦!

          訪問網(wǎng)站

          看似非常完美,但目前,網(wǎng)站其實(shí)還存在一定問題。

          現(xiàn)存問題

          首先,帶 www 與不帶 www 其實(shí)是兩個(gè)不同的網(wǎng)址,雖然對(duì)用戶來說,感覺是訪問了同一個(gè)網(wǎng)站。但對(duì)于搜索引擎,小蜘蛛們會(huì)把他們識(shí)別為兩個(gè)不同的網(wǎng)站,并且分別收錄這兩個(gè)路徑下網(wǎng)站的內(nèi)容,導(dǎo)致權(quán)重分散。雖然對(duì)流量小的網(wǎng)站來說影響不大,但對(duì)于大站點(diǎn),這是必須要處理的問題。

          此外,訪問 code-nav.cn(不帶 www)的用戶反映,網(wǎng)站上的數(shù)據(jù)無法加載。這是因?yàn)?,騰訊云云開發(fā)的 WEB 安全域名限制,只有在白名單內(nèi)的域名才允許訪問云資源(數(shù)據(jù)、文件等),因此,還要在 安全配置 中,補(bǔ)上 code-nav.cn 域名。

          云開發(fā)安全配置

          雖然現(xiàn)在訪問正常了,但是如果業(yè)務(wù)中還有一些和 www 網(wǎng)址強(qiáng)相關(guān)的邏輯,比如判斷用戶訪問的網(wǎng)址必須是 www.code-nav.cn 才允許登錄,那么你還要去修改代碼,考慮稍有不周,就會(huì)導(dǎo)致一些功能出現(xiàn)問題。

          為解決這些問題,我們可以使用 重定向 技術(shù)。

          重定向

          重定向是一個(gè)很廣泛的概念,即通過各種方法將各種網(wǎng)絡(luò)請(qǐng)求重新定個(gè)方向轉(zhuǎn)到其它位置,比如網(wǎng)頁重定向、域名重定向、數(shù)據(jù)報(bào)文重定向等。

          在網(wǎng)站開發(fā)中,重定向的應(yīng)用場(chǎng)景太多了,比如用戶未登錄時(shí),將它輸入的網(wǎng)址自動(dòng)跳轉(zhuǎn)為登錄頁;用戶訪問舊版網(wǎng)址時(shí),自動(dòng)跳轉(zhuǎn)到新版網(wǎng)頁。重定向不僅是導(dǎo)游,也是一名霸道的保安。

          因此,很多大站點(diǎn)都會(huì)采用重定向技術(shù)。比如訪問百度 baidu.com,按 F12 查看開發(fā)者控制臺(tái),可以看到網(wǎng)址通過 302 重定向,自動(dòng)跳轉(zhuǎn)為了 www.baidu.com。

          重定向

          那問題就來了,啥是 302 重定向?

          不妨看一看常見的重定向 HTTP 狀態(tài)碼。

          重定向 HTTP 狀態(tài)碼

          和重定向有關(guān)的 HTTP 狀態(tài)碼主要是 301、302、303、307、308,最常用的是 301 和 302,可以看看 MDN 官方對(duì)它們的解釋。

          301 是永久重定向(Moved Permanently)說明請(qǐng)求的資源已經(jīng)被 永久 移動(dòng)到了由 Location 頭部指定的 url 上,是固定的不會(huì)再改變,搜索引擎會(huì)根據(jù)該響應(yīng)修正。

          而 302 是暫時(shí)性轉(zhuǎn)移(Moved Temporarily,或者 Found),表明請(qǐng)求的資源被 暫時(shí) 移動(dòng)到了由 Location 頭部指定的 URL 上。瀏覽器會(huì)重定向到這個(gè) URL, 但是搜索引擎不會(huì)對(duì)該資源的鏈接進(jìn)行更新。

          雖然 301 和 302 都能夠?qū)⒂脩糨斎氲木W(wǎng)址 A, 改為重定向后的網(wǎng)址 B,但他們還是有區(qū)別的:

          • 搜索引擎區(qū)別:301 表示原地址 A 的資源已被移除,永遠(yuǎn)無法訪問,搜索引擎抓內(nèi)容時(shí)會(huì)將網(wǎng)址 A 全部替換為 B;而 302 表示網(wǎng)址 A 還活著,搜索引擎會(huì)在抓取網(wǎng)址 B 新內(nèi)容的同時(shí),保留網(wǎng)址 A 的記錄。
          • 安全性:302 跳轉(zhuǎn)有網(wǎng)站劫持的風(fēng)險(xiǎn),導(dǎo)致網(wǎng)站被盜用。

          再戰(zhàn) —— 云開發(fā)重定向?qū)嵺`

          了解重定向之后,來試試怎么實(shí)現(xiàn)重定向,以及如何在云開發(fā)中實(shí)現(xiàn)域名重定向。

          實(shí)現(xiàn)重定向的方式有很多,很大程度上依賴于你使用的 web 服務(wù)器,比如 Nginx、Apache、Tomcat 等,一般在服務(wù)器中添加幾條配置即可。

          我的編程導(dǎo)航網(wǎng)站是以容器的方式,部署在云開發(fā)提供的云托管功能上的。我把開發(fā)好的網(wǎng)站文件和提供 web 服務(wù)的 Nginx 服務(wù)器一起打包,做成了容器,于是,可以將每個(gè)容器當(dāng)成一個(gè)小服務(wù)器,獨(dú)立運(yùn)行。

          要支持重定向,只需要修改下 Nginx 的配置。比如這里我選擇給整個(gè)網(wǎng)站添加 301 永久重定向,配置文件如下:

          server {
          listen 80;
          # gzip config
          gzip on;
          ...

          root /usr/share/nginx/html;
          include /etc/nginx/mime.types;

          # 添加重定向
          if ($http_host ~ "^code-nav.cn") {
          rewrite ^(.*) https://www.code-nav.cn permanent;
          }
          }

          不必手寫和記憶 Nginx 配置,直接使用可視化界面生成即可:

          Nginx 可視化配置

          詳情參見這篇文章:輕松搞定 Nginx 配置代碼的神器!

          其他的服務(wù)器配置也可以自行查閱文檔,這里不再贅述。

          然后,在云托管上創(chuàng)建新版本,發(fā)布新的容器,就大功告成啦!

          新建版本

          查看下效果,訪問 code-nav.cn,網(wǎng)站重定向到了 www.code-nav.cn,完美!

          查看網(wǎng)絡(luò)請(qǐng)求

          總結(jié)

          最后,回顧下在騰訊云云開發(fā)中實(shí)現(xiàn)域名重定向的完整過程,包括如下步驟:

          1. 訪問服務(wù) 中添加父域名到網(wǎng)站的指向(云托管等)
          2. 安全配置 中添加父域名到白名單中
          3. 在 web 服務(wù)器中添加重定向配置
          4. 新建版本,部署發(fā)布

          整個(gè)流程還是非常簡(jiǎn)單的~

          如果本文對(duì)大家有幫助,請(qǐng)一定要給個(gè) 點(diǎn)贊 + 在看 支持呀!??


          往期推薦

          完了,最近被她們迷住了!

          氣炸!又一次被編輯器坑了!

          我工作中不可或缺的寶貝們!

          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色欲影视淫色淫香 | 在线毛片网站 | 北条麻妃被躁57分钟视频在线 | 操逼无码1080p | 国产成人黄色网 |