2017-05-11 64 views
4

我想從登臺服務器上的子目錄服務我的Vue.js應用程序。例如:http://url.com/subdir/app/Vue.js路由服務子目錄

現在,如果我這樣做,並設置構建配置assetsPublicPath來從該文件夾提供服務,所有的資產都服務良好,但我的應用程序無法正確路由。 「家」網頁被路由到「包羅萬象」,任何進一步的路線只是顯示正常的白頁404

這裏是我的路由器:

export default new Router({ 
    mode: 'history', 
    routes: [ 
    { 
     path: '/', 
     component: ContentView, 
     children: [ 
      { 
       path: '/', 
       name: 'DataTable', 
       component: DataTable, 
       meta: { requiresAuth: true } 
      }, 

      // =================================== 
      // Login 
      // =================================== 
      { 
       path: '/login', 
       name: 'AppLogin', 
       component: AppLogin, 
       meta: { checkAlreadyLoggedIn: true } 
      }, 
      { 
       path: '/logout', 
       name: 'AppLogout', 
       component: AppLogout, 
       meta: { requiresAuth: true } 
      } 
     ] 
    }, 
    { 
     path: '*', 
     component: ContentView, 
     children: [ 
      { 
       path: '/', 
       name: 'NotFound', 
       component: NotFound 
      } 
     ] 
    } 
]}) 

這裏是必要的配置/index.js更改:assetsPublicPath: '/subdir/app/'

在本地開發中,路由正常工作。但在登臺服務器上的所有靜態資產,內置的JS和CSS等服務都很好。然而,主線顯示了全部。我假設這是因爲我的路由設置不正確,或者因爲我需要在生產中的子目錄中執行某些操作。

回答

5

assetsPublicPath config僅用於webpack資產。對於vue-router,您需要在構造函數中設置base選項。

查看文件:https://router.vuejs.org/en/api/options.html#base

+1

謝謝!我檢查了環境,並根據它設置基地: 'base:process.env.environment ==='development'? '/':'/ subdir/app /'' – Gurnzbot