我无法使用浏览器中的输入直接路由。 我正在使用$ locationProvider.html5Mode(true); 因此,当我在浏览器中编写网址时,它们将无法在Angular JS中路由。
AppRouting.js
myApp.config(['$routeProvider',
function($routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider.
when('/', {
templateUrl: 'home.html',
controller: 'HomeController'
})
.when('/login', {
templateUrl: 'login.html'
})
.otherwise({
redirectTo: '/phones'
});
}]);
那我该怎么办?
答案 0 :(得分:1)
您的Web服务器必须能够重定向您的URL才能正常工作。 假设您在“ http://site”上,并且您有一个指向“ http://site/foo/bar”的链接。 当您单击此链接时,您实际上并没有进入该URL,而是进入了“ http://site/index.html#/foo/bar”,angularjs处理了其余部分。
但是,如果直接访问“ http://site/foo/bar”,则Web服务器将尝试在服务器上找到路径“ / foo / bar”(该路径不存在),因此必须将服务器配置为重定向一切都保存到“ index.html”。
使用Apache时,可以将其添加到.htaccess中:
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
更多信息here。