vue動態網站Seo方案實操 (附IIS重定向配置)


1.背景

先吹一波,我們公司花了幾個月使用vue+.net(然而我是個java后端程序員)開發了我們公司官網 財稅百問百答 www.csbwbd.com,由於需要做推廣這里就涉及到了需要在百度上做SEO,因為動態網站基本沒辦法被百度收錄,結果領導把任務交給了我(接鍋,寶寶心里苦呀),ok,多的不說,開始我們的面向百度開發;首先介紹下我是一個兢兢業業的java后端程序猿,除了用springBoot做個十多個項目以外,還寫過幾個月的android、用過elasticSearch、用Java寫過爬蟲、用過angular,還寫過vue,還在搞服務器維護,又要搞seo了。嗨,說下我這兩天的成果吧。

 

環境

windows server 2012、nginx、iis、nodejs、Phantomjs

解決方案

使用Phantomjs針對百度爬蟲做處理+nginx配置+IIS配置(別問我為什么要用到IIS,這是歷史遺留問題)

 

解決步驟:

項目已使用PrerenderSPAPlugin組件預渲染,參考:https://segmentfault.com/a/1190000018182165

原理參考文檔:https://segmentfault.com/a/1190000019623624

1.安裝Phantomjs

參考文檔:https://github.com/lengziyu/vue-seo-phantomjs

安裝PM2

https://www.jianshu.com/p/093a2fbd6705

這里文檔有一個坑:就是執行測試命令時用:(不需要引號)

phantomjs spider.js https://www.baidu.com/

其他的 按照文檔配置就行

記錄下PM2命令:

PM2 start server.js

PM2 restart server.js

PM2 stop server.js

我的 nginx配置

# 以下配置爬蟲代理
    upstream spider_server {
      server localhost:8081;
    }

    server {
        listen       8880;
        server_name  www.csbwbd.com;
        
        location / {
          root   D:/BWBD/projectPlace/front/dist;
          proxy_set_header  Host            $host:$proxy_port;
          proxy_set_header  X-Real-IP       $remote_addr;
          proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

          if ($http_user_agent ~* "Baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator|bingbot|Sosospider|Sogou Pic Spider|Googlebot|360Spider") {
        proxy_pass  http://spider_server;
          }
        }
    }
# 以上配置爬蟲代理

 

接下來就是第二個坑IIS

本來按照文檔上配置 按照我的nginx配置監聽80端口就ok了

方案A:結果 服務器的80端口 被IIS占用了 之前前端部署到 還有好幾個.net的程序用的2級域名也占用了80端口,然后經過多方協調,把.net的程序端口改成其他端口。但是IIS還是咬着80端口不放,百度了各種方法,甚至都重啟了!還是不行,垃圾windows服務器!

方案B:本來最初的想法是在IIS里面模擬nginx做請求頭判斷轉發的!結果百度了半天木法、垃圾IIS,連nginx的腳指頭都比不上!

方案C:請.net的同事寫個簡單的后端把前端打包到后端,然后搞個請求頭(user-agent標識為爬蟲,這里解釋下為什要只針對爬蟲進行渲染,因為渲染比較慢,不能影響正常的訪問,可能會影響收錄效果)判斷轉發到node Server,搞了半天還是問題巨多,搞不了。

方案D: 最后的方法,IIS使用80端口,實際使用nginx將前端項目部署到8880端口下,用戶輸入公司官網地址由IIS做個重定向到8880端口,然后nginx判斷請求頭是否是爬蟲如果是再用node server去解析成html返回如果正常訪問則直接訪問nginx8880端口不用渲染。

實現方案D做的操作

1、修改server.js

 

 2.iis的重定向配置

 

 以上配置 可以實現將地址: http://www.csbwbd.com/ChildPublicOne/?guids=4F9B3053-3D0B-4DF6-BB5A-DC8CCF506B7B&dataType=F 重定向到:http://www.csbwbd.com:8880/ChildPublicOne/?guids=4F9B3053-3D0B-4DF6-BB5A-DC8CCF506B7B&dataType=F (這個配置也百度了半天)

但是現在用戶訪問我們官網,看到網址后面還帶個端口,怎么看怎么不專業,也不知道會不會影響SEO!繼續想辦法學習優化吧 萬惡的IIS。

 

補充:之前提到了重定向會出現訪問官網帶端口的問題:然后研究了下,IIS是支持反向代理的,使用IIS的重寫功能可以解決以上問題,不顯示端口了,所以關閉重定向使用IIS URL重寫功能 具體配置如下

 

 

 

 參考文檔:找不到了 百度一大堆 (IIS配置反向代理)

實現效果:

 

 

 

 

 最后結論:此方案在復雜的環境下解決了動態網站的百度爬蟲抓取問題,還有的問題是預渲染效率較低,可能會影響爬蟲抓取,待優化。

 

2020-09-09補充 這里IIS還有一個坑就是服務器端對網頁的緩存(該緩存會導致首頁正常訪問后被緩存下來 百度爬蟲去訪問直接返回緩存頁面,沒有走phantom解析)

解決方案: 在“輸出緩存”菜單做如下設置

 補充:

涉及到動態tdk可以使用 vue-meta-info 插件 親測可用

https://www.jianshu.com/p/50a8449a62c8 

另外 全局靜態 放在vue全局index.html上面

    <meta data-vue-meta-info="true" name="keyWords" content="稅收政策,稅收優惠,稅收案件,稅收熱點,稅收問答,財稅咨詢,增值稅,增值稅專用發票,一般納稅人,小規模納稅人,個體工商戶,企業所得稅,個人所得稅,小微企業增值稅">
    <meta data-vue-meta-info="true" name="description" content="財稅百問百答平台以財稅文庫檢索和智能問答咨詢為核心,以應用培訓和實操咨詢為支撐,目標是讓用戶的財稅問題都能得到解答。" />
data-vue-meta-info="true" 這個屬性設置的作用是如果在代碼中設置了 會覆蓋上面靜態的 如果沒有設置就沿用上面配置 如果屬性設置為false 就會添加 不會覆蓋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM