2016-10-02 184 views
0

所以我需要更改我的網址,以便谷歌分析可以跟蹤它。谷歌分析不會用鏈接中的「/#/」(散列)來接受它。這就是說,我用角的locationProvider和修訂我的應用程序的路由:角URL路由問題

(function() { 
    'use strict'; 

    angular 
    .module('mbapp') 
    .config(routerConfig); 

    /** @ngInject */ 
    function routerConfig($stateProvider, $urlRouterProvider, $locationProvider) { 
    $stateProvider 
     .state('home', { 
     url: '/', 
     templateUrl: 'app/main/main.html', 
     controller: 'MainController', 
     controllerAs: 'main' 
     }); 

    $stateProvider 
     .state('steps', { 
     url: '/steps', 
     templateUrl: 'app/steps/steps.html', 
     controller: 'StepsController', 
     controllerAs: 'steps' 
     });  

    // use the HTML5 History API 
    $locationProvider.html5Mode(true);  

    $urlRouterProvider.otherwise('/'); 
    } 

})(); 

我的網址是罰款,並將其更改爲http://website.com/steps,而不是http://website.com/#/steps。但是,現在,如果用戶刷新(f5)鏈接,則會拋出404錯誤,但不知道爲什麼。此外,當刷新被稱爲「http://website/steps#/steps」時,它似乎以某種方式被注入爲URL。

對此的任何想法?

非常感謝。

+0

我有同樣的問題來解決它我更新的分析onpagechange像在這個http://stackoverflow.com/questions/12989106/handle-urls-with-hash-with-google-analytics –

+0

消化了幾種角度分析模塊周圍......沒有這個問題,我自己與基於散列的路由,並也實時監測ga流量 – charlietfl

+0

@AsafHananel - 你的意思是「_trackPageview」? – Mark

回答

0

問題可能出現在服務器端。您必須配置您的服務器,以便使用您的html文件響應每個請求。例如,在快遞:

var app = require('express')(); 

app.configure(function(){ 
    // static - all our js, css, images, etc go into the assets path 
    app.use('/assets', express.static('/assets')); 

    app.get('/api/users/:id', function(req, res){ 
    // return data for user.... 
    }); 

    // This route deals enables HTML5Mode by forwarding missing files to the index.html 
    app.all('/*', function(req, res) { 
    res.sendfile('index.html'); 
    }); 
}); 

當你重新載入頁面,請求進入應用程序的服務器端,並嘗試解析URL,但它可能不能,因爲這些路線只存在於客戶端的應用程序。

此外,爲每個服務器端路由添加/api路由前綴的前綴是個好主意,因此您可以輕鬆區分客戶端路由和服務器端路由。