当我们直接在url中键入链接时,角度路由失败

时间:2014-09-11 14:08:16

标签: angularjs

我正在使用启用了HTML5Mode的角度路由。现在,当用户点击我的主页上的超链接到/ portal / books / xxx时,他会显示一个特定的部分,但是当他直接在地址栏中输入它时,它将无法工作。只是想知道是否有解决方案?

$routeProvider
  .when('/portal', {
    templateUrl: 'partials/books-index',
    controller: 'BooksIndexCtrl',
  })
  .when('/portal/books/:bookUrl', {
    templateUrl: 'partials/book',
    controller: 'BookCtrl'
  })

1 个答案:

答案 0 :(得分:1)

您是否正确设置了网址重写规则?请记住,在HTML5模式下,所有请求都应该定向到index.html,以使其正常工作。

对于Apache,在.htaccess文件中添加如下内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]

对于Nginx,在虚拟主机配置文件中,您可以添加如下内容:

location / {
    try_files $uri $uri/ /index.html =404;
}