我正在使用ui-router进行状态管理,但是我认为自己的.htaccess重写规则遇到了麻烦。使用/#/帐户样式网址时,我所有的状态均有效。现在,我启用了html5模式,但我的应用程序没有像以前那样呈现。它似乎加载了我的index.html以及我的所有js和css文件等,但实际上并未初始化任何状态。
这是我的文件夹结构:
root/
app/
components/
angular/
...
images/
scripts/
controllers/
directives/
...
app.js
styles/
views/
.htaccess
...
我的虚拟主机DocumentRoot指向我的 app/
这是我的状态为我的app.js:
'use strict';
angular.module('appointeddPortalApp', ['ngResource', 'ui.state', 'ui.compat', 'fundoo.services', 'ui.date', 'ngCookies'])
.config(function ($stateProvider, $routeProvider, $locationProvider, $httpProvider) {
var access = routingConfig.accessLevels;
delete $httpProvider.defaults.headers.common["X-Requested-With"];
$httpProvider.defaults.useXDomain = true;
$locationProvider.html5Mode(true);
$stateProvider
.state('root', {
abstract: true,
url: '',
views: {
'header': {
templateUrl: 'views/partials/header.html'
},
'search': {
templateUrl: 'views/partials/search.html',
controller: 'SearchCtrl'
},
'main': {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
},
'footer': {
templateUrl: 'views/partials/footer.html'
},
},
})
.state('root.home', {
url: '',
views: {
'content': {
templateUrl: 'views/home/index.html',
controller: 'MainCtrl',
}
},
access: access.anon
})
.state('root.about', {
url: '/about',
parent: 'root',
views: {
'content': {
templateUrl: 'views/about.html',
controller: 'StaticCtrl'
},
'search@': {}
},
access: access.anon
})
.state('root.search', {
url: '/search/:city/:category',
views: {
'content': {
templateUrl: 'views/search.html',
controller: 'SearchCtrl'
}
},
access: access.anon
})
.state('root.salons_profile', {
url: '/salons/{id}',
views: {
'content': {
templateUrl: 'views/salons.profile.html',
controller: 'SalonCtrl',
},
'search@': {}
},
access: access.anon
})
.state('root.account', {
url: '/account',
abstract: true,
views: {
'content': {
templateUrl: 'views/user/account.html',
controller: 'AccountCtrl'
}
},
})
.state('root.account.info', {
url: '',
views: {
'account_head': {
templateUrl: 'views/user/account.head.html',
},
'account_body': {
templateUrl: 'views/user/account.my_appointedd.html',
},
},
menus: {
'account': {
identifier: 'my_appointedd',
class: 'active'
}
},
access: access.user
})
.state('root.account.appointments', {
url: '/appointments',
views: {
'account_head': {
templateUrl: 'views/user/account.head.html',
},
'account_body': {
templateUrl: 'views/user/account.appointments.html',
},
},
menus: {
'account': {
identifier: 'appointments',
class: 'active'
}
},
access: access.user
})
.state('root.account.details', {
abstract: true,
views: {
'account_head': {
templateUrl: 'views/user/account.head.html',
},
'account_body': {
templateUrl: 'views/user/account.details.html',
},
},
access: access.user
})
.state('root.account.details.account', {
url: '/details',
views: {
'right': {
templateUrl: 'views/user/account.details.account.html',
},
},
menus: {
'account': {
identifier: 'details',
class: 'active'
},
'settings': {
identifier: 'account',
class: 'active'
}
},
access: access.user
})
.state('root.account.details.profile', {
url: '/profile',
views: {
'right': {
templateUrl: 'views/user/account.details.profile.html',
},
},
menus: {
'account': {
identifier: 'details',
class: 'active'
},
'settings': {
identifier: 'profile',
class: 'active'
}
},
access: access.user
});
})
.run( [ '$location', '$state', '$stateParams', '$rootScope', '$cookies', 'Auth', function( $location, $state, $stateParams, $rootScope, $cookies, Auth){
$rootScope.client_id = '51a741eb3152c3ae7e000103';
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$rootScope.$cookies = $cookies;
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
if (!Auth.authorize(toState.access)) {
if(Auth.isLoggedIn()) $state.transitionTo('root.account');
else $state.transitionTo('root.home');
}
});
这是我在/ app中的.htaccess中的重写代码。我认为这可能是错误的。
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(components|images|scripts|styles|views)($|/) - [L]
RewriteRule ^(.*)$ index.html [L]
</IfModule>
此配置对使用html5mode和ui-router的许多Apache用户有效。
<VirtualHost *:80>
ServerName my-app
DocumentRoot /path/to/app
<Directory /path/to/app>
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
</Directory>
</VirtualHost>
另外,请确保您不是<base href>
错误的受害者。有关更多信息,请参见ui路由器常见问题。
我用Spring Boot启动我的Web应用程序。它使用一个简单的主类来启动嵌入式tomcat服务器: 我想配置服务器的方式,他可以处理angularjs HTML5模式,将激活与 其他用户的相关帖子显示,您需要重定向到根目录。html5模式从url中删除hashbag。如果你刷新页面,服务器找不到页面,因为他没有处理散列。请参阅:AngularJS-为什么更改url地址时$routeProvid
问题内容: 我希望能够在不更改状态的情况下更改地址的URL,以防止重新呈现。从我的搜索来看,当前没有提供此功能,但从丑角提供了。 因此,自然而然地,我想使用该州的URL,这样就不必手动键入URL。 我有两个问题: 仅返回相对路径。如何获得绝对路径? 它还返回状态的定义,参数未定义。如何获得带有参数的URL? 举例来说,如果我有一个名为状态有,我有我的状态定义为 因此,现在返回。如何获得完整的URL
问题内容: 嗨,您已经用yeoman,grunt和bower创建了一个angularJS应用程序。我已经为应用程序启用了html5Mode。及其工作。但是,当我刷新页面(localhost:9000 / login)时,它说 这是应用程序结构 这是我的 app.js 路由 这是我的Gruntfile.js 我已经解决了这个问题。根据已接受的答案,我将Gruntfile.js更改为以下内容。 但是刷
问题内容: 使用此处提到的示例,如何使用JavaScript而不是单击按钮来调用模式窗口? 我是AngularJS的新手,并尝试在这里和这里搜索文档,但是没有运气。 谢谢 问题答案: 好的,因此,首先http://angular-ui.github.io/bootstrap/有一个指令和服务,这两个指令都可以用来打开模式窗口。 与众不同的是,使用模式的指令内容嵌入在宿主模板中(一个触发模式窗口打开
问题内容: 这是我的plnkr:http ://plnkr.co/edit/n8cRXwIpHJw3jUpL8PX5?p=preview 您必须单击li元素,然后表格会出现。输入一个随机字符串,然后点击“添加通知”。代替textarea文本,您将得到未定义。 标记: JS部分: 返回“未定义”。我注意到当使用angular-ui的ui-if时,这不起作用。任何想法为什么这不起作用?如何解决? 问题
iam无法在运行应用程序时检索到swagger ui,http://localhost:8080/Swagger-ui.html,有人能说出原因吗?