我想从我的网址中删除#
,因此我有以下代码:
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生成模块可能很有用。
答案 0 :(得分:0)
来自Angular docs:
使用[html5mode]需要在服务器端重写URL,基本上就是你 必须重写所有链接到您的应用程序的入口点 (例如index.html)。要求&lt; base&gt;标签对此也很重要 case,因为它允许Angular区分部分 url是应用程序库和应该处理的路径 通过申请。
即。你需要告诉你的服务器重写/建立/index.html的任何请求。
答案 1 :(得分:0)
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