所以这是我的路由器:
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模式?
答案 0 :(得分:1)
如果不从服务器运行项目并执行一些特殊工作来路由请求,则无法解决此问题。它涉及以下步骤:
例如,使用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为任何客户端应用程序执行相同的步骤。
答案 1 :(得分:0)
在.htaccess中使用Apache:
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作为para文件传递给php文件。如果需要,您可以使用$_GET['para']
在php skript中进一步处理此问题。
Apache重写您的请求并提供符合规则的文件。
即。请求:
答案 2 :(得分:0)
在.htacces或.conf中添加 在模块目录上 AllowOverride All usuallity be None