我的s3 + cloudfront中有几个网站,例如:
www.example.com是主要的存储桶,test和test1是下面的文件夹和单独的网站。
现在的问题是当我尝试在新标签页中打开内容时,例如仪表板。什么是常规导航时,网址变为:www.example.com/test/#/dashboard,它完美无缺。但是当它是一个新选项卡时,它会删除测试,成为:www.example.com/#/dashboard并给我一个404.
这是角度配置问题吗?还是cloudfront和s3问题?
编辑,下面的一些路由配置代码:
$urlRouterProvider.otherwise("/");
$stateProvider
.state('home', {
url: '/',
templateUrl:'test/javascripts/templates/welcome/views/welcome.html',
controller: 'WelcomeController'
})
.state('dashboard', {
url: '/dashboard',
templateUrl: 'test/javascripts/templates/dashboard/views/dashboard.html',
controller: 'DashboardController'
})
答案 0 :(得分:2)
错误似乎是#URL's
将$locationProvider.html5Mode(true);
添加到配置文件。
app.config(["$stateProvider","$locationProvider", function($stateProvider,$locationProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('home', {
url: '/',
templateUrl:'test/javascripts/templates/welcome/views/welcome.html',
controller: 'WelcomeController'
})
.state('dashboard', {
url: '/dashboard',
templateUrl: 'test/javascripts/templates/dashboard/views/dashboard.html',
controller: 'DashboardController'
})
$locationProvider.html5Mode(true).hashPrefix('!')
}]);
现在,您应该告诉浏览器有关更改的信息,因此您必须在HEAD代码中设置base href
。
<强> <base href="/">
强>
答案 1 :(得分:0)
<base href="/">
但是由于我正在处理s3中的文件夹,我认为/指向了我的网址的基础并从网址中删除了test
。所以我只需要删除/成为:
<base href="">