使用的是vue-element-admin做示例,可以參考Vue項目根據不同運行環境打包項目,其他項目應該大同小異。
使用vue-router
的browserHistory模式,配置mode: 'history'
, 有更好的體驗。
目的: 想將項目打包后發布到apache的www下的vue子目錄
先講結論:
- 需要修改
router/index.js
中new Router
配置,加一個base: '/vue/'
, 它指定應用的基路徑,該應用是服務於localhost/vue
路徑下,所以必須加base
配置,否則應用會展示404頁面 - 需要修改
config/index.js
中build下的assetsPublicPath: '/vue/'
,如果用相對路徑,chunk文件會報錯找不到。 -
修改
httpd.conf
文件,開啟rewrite_module功能。-
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
,去掉前面的#。 - 然后找到
AllowOverride None
的那行,把它改成AllowOverride All
,來使.htaccess
文件生效。
-
- 在apache 的
www/vue
目錄下新建.htaccess
文件, 需要修改RewriteRule
為/vue/index.html
, 否則刷新頁面服務端會直接報404錯誤。
.htaccess文件內容
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /vue/index.html [L]
</IfModule>
放到www根目錄,或更深的目錄,只需要對應的修改即可。第一點比較重要,參考項目的文檔上也沒有說明,加上不夠細致,對新手還是有門檻的。
希望這篇文檔幫助更多人。。。