Angular:$ locationProvider.html5Mode(true)路由问题

时间:2016-03-18 22:47:56

标签: angularjs yeoman

我想从我的网址中删除#,因此我有以下代码:

angular.module('building')
    .config(['$stateProvider', '$locationProvider', 
        function ($stateProvider, $locationProvider) {

            // Turn on #-less links.
            $locationProvider.html5Mode(true);

            $stateProvider
                .state('building', {
                    url:'/building',
                    templateUrl: 'app/modules/building/building.html',
                    controller: 'BuildingQuery',
                    controllerAs: 'vm'
            })

    }]);

我的<base href="/">文件中有index.html

代码工作......有点儿。

如果我输入这样的链接......

http://127.0.0.1:4000/#/building

然后浏览器将该网址重定向到...

http://127.0.0.1:4000/building

并加载页面。

但是,如果我输入此网址...

http://127.0.0.1:4000/building

...然后

Cannot GET /building

由于#网址正确重定向,我知道$locationProvider.html5Mode(true);正在做某事

有什么想法吗?知道我正在使用angm生成模块可能很有用。

2 个答案:

答案 0 :(得分:0)

来自Angular docs

  

使用[html5mode]需要在服务器端重写URL,基本上就是你   必须重写所有链接到您的应用程序的入口点   (例如index.html)。要求&lt; base&gt;标签对此也很重要   case,因为它允许Angular区分部分   url是应用程序库和应该处理的路径   通过申请。

即。你需要告诉你的服务器重写/建立/index.html的任何请求。

答案 1 :(得分:0)

evsheino向我指出了正确的方向。我的代码没有问题,是服务器配置导致问题。我所要做的就是将以下内容添加到我的gruntfile.js

public static void VerificationTest(uint expected)
{
    using (var stream = new MemoryStream())
    {
        var key = new byte[256];

        for (var i = 0; i < 256; i++)
        {
            key[i] = (byte)i;
            var hasher = new MurMurHash3((uint)(256 - i));

            int computed = hasher.ComputeBytesFast(key.Take(i).ToArray());
            stream.Write(BitConverter.GetBytes(computed), 0, 4);
        }
        var finalHasher = new MurMurHash3(0); //initial seed = 0
        int result = finalHasher.ComputeBytesFast2(stream.GetBuffer());
        if (result == (int)expected)
            Console.WriteLine("Verification passed.");
        else
            Console.WriteLine("Verification failed, got {0:x8}, expected {1:x8}", verification, expected);
    }
}

可在此处找到完整说明:http://jjt.io/2013/11/16/angular-html5mode-using-yeoman-generator-angular/

编辑:这是connect