日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue按照url地址访问出错404

發布時間:2023/11/30 vue 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue按照url地址访问出错404 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:

最近在開發cms的時候使用Vue.js框架,利用vue-route結合webpack編寫了一個單頁路由項目,自己在服務器端配置nginx。部署完成后,訪問沒問題,從頁面中點擊跳轉也沒問題,但是只要點擊刷新或通過瀏覽器地址欄回車,就會出現404現象!在本地開發中是沒有這個問題的,調試的時候一切都是正常的

在服務器上?
如直接訪問地址:

http://10.***.**.116:8081/home/application/list
  • 1

便會出現404

問題原因:

刷新頁面時訪問的資源在服務端找不到,因為vue-router設置的路徑不是真實存在的路徑。

如上的404現象,是因為在nginx配置的根目錄/html/dist下面壓根沒有/home/application/list這個真實資源存在,這些訪問資源都是在js里渲染的。

在這里因為我使用的是vue-router的history模式

vue-router 默認 hash 模式 —— 使用 URL 的 hash 來模擬一個完整的 URL,于是當 URL 改變時,頁面不會重新加載。

因為我不想要很丑的 hash,就是使用路由的 history 模式,這種模式充分利用 history.pushState API 來完成 URL 跳轉而無須重新加載頁面。

const router = new VueRouter({mode: 'history',routes: [...] })
  • 1
  • 2
  • 3
  • 4

當使用 history 模式時,URL 就像正常的 url,例如?http://yoursite.com/user/id,也好看!

不過這種模式要玩好,還需要后臺配置支持。因為我們的應用是個單頁客戶端應用,如果后臺沒有正確的配置,當用戶在瀏覽器直接訪問?http://oursite.com/user/id?就會返回 404,便是出現了以上提及到的問題。

所以呢,你要在服務端增加一個覆蓋所有情況的候選資源:如果 URL 匹配不到任何靜態資源,則應該返回同一個 index.html 頁面,這個頁面就是你 app 依賴的頁面。

問題解決:

后端配置例子

Apache

<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.html$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.html [L] </IfModule>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

nginx

location / {try_files $uri $uri/ /index.html; }
  • 1
  • 2
  • 3

Node.js (Express)

https://github.com/bripkens/connect-history-api-fallback
  • 1

注意:

給個警告,因為這么做以后,你的服務器就不再返回 404 錯誤頁面,因為對于所有路徑都會返回 index.html 文件。為了避免這種情況,你應該在 Vue 應用里面覆蓋所有的路由情況,然后在給出一個 404 頁面。

const router = new VueRouter({mode: 'history',routes: [{ path: '*', component: NotFoundComponent }] })
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

或者,如果你是用 Node.js 作后臺,可以使用服務端的路由來匹配 URL,當沒有匹配到路由的時候返回 404,從而實現 fallback。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的vue按照url地址访问出错404的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。