我項目中設置vue路由爲history模式,項目就會少了地址欄的#號,比較美觀,同時也會存在一系列問題。部署到nginx後會存在刷新404的問題。因此想用好該模式須要後端配合。官網有說明的css
nginx的配置html
修改nginx的location配置,使用try_files直接指定到index.html文件vue
location / {
# root 根目錄,默認nginx下的html文件夾,能夠指定其餘
root ./html;
index index.html;
# vue的路由並非真實物理路由,因此用try_files,路徑都指向根目錄下的index.html
try_files $uri $uri/ /index.html;
}
root:隨便指定一個目錄,目錄下存放vue構建後的文件nginx
index:指定的首頁文件後端
try_files:由於vue的路由都是從index.html做爲入口,因此用try_files就對了服務器
js、css等引入失敗ide
js、css等文件路徑加載有誤,跟地址欄的路由拼接起來做爲js、css的目錄了。找了不少資料,後來發現,是由於個人配置中使用了相對路徑ui
查找好久,剛開始覺得是nginx的鍋,後來才發現,原來是我改爲相對路徑致使的htm
assetsPublicPath: './',
項目中config文件夾下index.js中,默認是"/",由於本地打開build時頁面空白,因此修改爲相對路徑"./",結果影響到部署服務器了。由於個人路由模式是history,並且存在多個子路由。因此應該改爲絕對路徑。才能正常引入vue編譯後的js、css文件blog
改爲
assetsPublicPath: '/',
一切正常