AngularJS html5Mode刷新失败
AngularJS html5Mode refresh fails
这是我的路由器:
var app = angular.module('tradePlace', ['ngRoute', 'tradeCntrls']);
app.config(['$routeProvider', '$locationProvider', function($route, $location) {
$route.
when('/', {
redirectTo: '/index'
}).
when('/index', {
templateUrl: './includes/templates/index.php',
controller: 'indexCntrl'
}).
when('/register', {
templateUrl: './includes/templates/register.php',
controller: 'indexCntrl'
}).
otherwise({
redirectTo: '/index'
});
$location.html5Mode(true);
}])
我将html5模式设置为true,所以现在URL中没有#。
如果我去mysite.com/它重定向我到/index,但当我重新加载页面(f5)或去mysite.com/index我得到一个404错误。
有办法解决这个问题吗?或者干脆不使用html5模式?
如果不从服务器上运行项目并做一些特殊的工作来路由请求,就没有办法解决这个问题。它包括以下步骤:
- 捕获静态文件请求(例如图像文件)
- 将其他请求发送到index.html,由路由器处理
例如,使用nodeJS express服务器,它看起来像这样:
// Capture real static file requests
app.use(express.static(__dirname + '/public'));
// All get requests not captured above go to the client.
server.get('*', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
注意,这不是Angular特有的问题。对于任何使用html5 pushState的客户端应用程序,都必须执行相同的步骤。
Apache在你的。htaccess中使用:
RewriteEngine On
RewriteBase /
RewriteRule ^index.php - [L]
#your static data in the folder app
RewriteRule ^app - [L]
#everything else
RewriteRule ^(.*)$ index.php?para=$1 [QSA,L]
编辑:整个请求的url作为参数传递给php文件。如果需要,您可以在php脚本中使用$_GET['para']
进一步处理此操作。
Apache会重写你的请求,并传递符合规则的文件。
。要求:
- http://somehost.com/blabla -> index.php?帕拉=鼓励性
- http://somehost.com/app/mainapp.js -> app/mainapp.js
将此添加到。htacces或。conf中模块目录AllowOverride所有通常为无
相关文章:
- PHP和JS脚本的奇怪问题,在我刷新页面之前第一次失败
- Jquery选择菜单选项在页面刷新时失败
- 登录失败时不刷新
- AngularJS:cookie 在浏览器刷新时失败
- 第一次加载时绘制到画布失败.刷新后就可以工作了
- JavaScript仅在Chrome中刷新后失败
- Ajax调用有时工作,有时工作和刷新,有时刷新和失败....
- Firefox失败-使用文档后.写入和更新位置.哈希导致页面刷新
- 在页面刷新时,单元测试在通过和失败之间交替进行
- Ruby on Rails在使用ajax刷新页面时失败
- 如何刷新jwt并重新发送失败的http请求
- AngularJS html5Mode刷新失败
- jQueryUI可排序刷新失败
- Javascript会间歇性地失败,但在页面刷新时可以正常工作
- 刷新令牌是如何工作的,以及上次失败的http请求是如何再次调用的,给出401.
- 表单提交第一次失败,并在刷新页面时工作
- jsTree 在第二次刷新时失败
- 尝试使用AJAX提交而不刷新,静默失败
- 提交失败后刷新jquery表单
- 浏览器检测使用javascript失败刷新