无法让 Angular-ui ui.route 与 Apache 一起路由

Can't get Angular-ui ui.route to route along with Apache

我通过 Apache 服务器在我的电脑上 运行 我的 Web 应用程序。 出于某种原因,ui.route 提供的路由从未达到我定义的一个简单状态,这真的很痛苦。

为了调试它,我输入了一个通配符来捕获所有路径,发现路径 ui.routing 不断获取是:"" .

这是为什么?

这是我的 app.js:

angular.module('populaApp', [
  'populaApp.controllers','ui.bootstrap','ngEmbedApp','ui.router',
]).config( function($stateProvider, $urlRouterProvider) {
        $stateProvider
    .state('state1', {
            url: "*path",
      templateUrl: "http://localhost/popula/app/html/tagsview.html",
            controller: "listsController"
    });
});

和我的 .htaccess:

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]

在我的控制器上,我写道:

console.log($stateParams);

它回应:

Object {path: ""}

不管路径到底是什么。

有什么建议吗?

您需要启用html5Mode

$locationProvider.html5Mode(true);

因此,在您的配置中

angular.module('populaApp', [
  'populaApp.controllers','ui.bootstrap','ngEmbedApp','ui.router',
]).config( function($stateProvider, $urlRouterProvider,$locationProvider) {
    $locationProvider.html5Mode(true);
        $stateProvider
    .state('state1', {
            url: "*path",
      templateUrl: "http://localhost/popula/app/html/tagsview.html",
            controller: "listsController"
    });
});

为什么?如果您不启用 html5mode,默认情况下 angular 将仅匹配以 # 作为前缀的网址。即 myserver.com/#home .