我正在使用angular js state provider。我想要这样的网址。 http://localhost:8080/state1/state1.html。它说“不能GET /state1/state1.html”。 这是代码
$stateProvider
.state('state1', {
url: '/state1/state1.html',
templateUrl: "partials/state1.html",
controller: 'MyCtrl'
});
当我删除.html时它工作正常。如何在此方案中处理点。我正在使用节点服务器
谢谢
答案 0 :(得分:1)
这是节点服务器或前端路由器配置的问题,大多数情况发生在webpack-dev-server下,或者说它表达的不完美。并且根据RFC3986,
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
除非您将其打包为自定义解决方案,否则无法将.
转换为%2e
。
如果您的路由器是使用历史记录API在前端实现的,那么您可以打包角度应用程序并提供服务,然后在Nginx或Caddy服务器下编译,它将正常工作。
对于节点服务器或其他服务器,您最好在路由器配置中指定*.*
。
答案 1 :(得分:0)
var routerApp = angular.module('routerApp', ['ui.router']);
routerApp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('main', {
url: '/',
template: '...'
})
.state('home', {
url: '/urlto/home.html',
template: 'Home page'
})
.state('about', {
url: '/urlto/about.html',
template: 'about page'
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router.min.js"></script>
<div ng-app="routerApp">
<nav class="navbar navbar-inverse" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" ui-sref="#">AngularUI Router</a>
</div>
<ul class="nav navbar-nav">
<li><a ui-sref="home">Home</a></li>
<li><a ui-sref="about">About</a></li>
</ul>
</nav>
<div class="container">
<div ui-view></div>
</div>
</div>
似乎对我来说很好。也许你有HTML5模式和服务器应用程序路由问题?
答案 2 :(得分:0)
带点的网址工作得很好。 Here in this plunker,状态withdot
已配置网址/withdot.html
,我添加了带点的网址参数,以便进行衡量。
url规范中没有特定的点(.
)处理,而状态名称中的点则表示父/子关系。