Vue項目打包部署到apache服務器


vue項目在開發環境下,讓項目運行起來,是通過npm run dev命令,原理是在本地搭建了一個express服務器。

但是在服務器上就不是這樣的,必須要通npm run build命令來對整個項目進行打包,打包后會在項目目錄下生成一個dist文件夾,內容如下:

然后就是把這些文件丟到服務器上的某個文件夾下,我這里的文件夾名字是ibms

 

 

遇到的問題:

1. 直接去訪問,會發現網頁是白屏的,什么都沒有,這就比較奇怪了,其實是因為資源加載的路徑有問題!

解決方法:

config中的index.jsbuild下修改webpack配置:

assetsPublicPath: '/ibms/'

 在router中的index.js配置中加上:

export default new Router({
  mode: 'history',
  scrollBehavior: () => ({ y: 0 }),
  base: '/ibms/', // 加上這一行
  routes: constantRouterMap
})

接下來再重新npm run build打包,然后丟到服務器上ibms文件夾下,這時頁面就可以正常訪問了。

 

2. 在當前頁面刷新或者用url欄訪問某個子頁面,結果發現網頁404了,這是因為vue路由的mode是history模式。

解決方法:

把所有的請求全部轉發到http://www.xxx.com/ibms/index.html上就可以了

我這里用的是apache做的web服務器,在ibms目錄下新建.htaccess文件(跟index.html同級),編輯代碼。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ibms/
    RewriteRule ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /ibms/index.html [L]
</IfModule>

這個配置的作用就是把所有服務器上不存在請求全部轉發到index.html上去。(PS:記得要重啟apache服務器哦

 

 

如有錯誤,請多指教,謝謝!


免責聲明!

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



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