2016-10-02 16 views
0

Google Analyticsがそれを追跡できるようにURLを変更する必要がありました。 Googleアナリティクスはリンク内の「/#/」(ハッシュ)を使用してそれを受け入れません。それは言った、私は角度の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('/'); 
    } 

})(); 

私のURLが細かく、http://website.com/stepsではなくhttp://website.com/#/stepsにそれを変更します。ただし、ユーザーがリンクをリフレッシュ(f5)すると、404エラーがスローされ、その理由がわかりません。さらに、リフレッシュが "http://website/steps#/steps"と呼ばれるとき、何とかURLとして注入されるようです。

これに関するご意見はありますか?

ありがとうございました。

+0

私はそれを解決するために同じ問題を抱えていました。これは、この記事のsugestionのように解析onpagechangeを更新しました。http://stackoverflow.com/questions/12989106/handle-urls-with-hash-with-google-analytics –

+0

いくつかの角度解析モジュールは...ハッシュベースのルーティングでこの問題を自分自身で持っていないし、リアルタイムでガトラフィックを監視しています – 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のルート接頭辞を付けると、クライアント側とサーバー側のルートを簡単に区別できます。

関連する問題