Использование ui-router и $locationProvider.html5Mode(true); с генератором Yeoman AngularJS

Я хочу перейти от использования модуля ngRoute AngularJS к структуре модуля ui-router. Мое приложение использует $locationProvider.html5Mode, и чтобы глубинные ссылки не выдавали ошибку 404, я установил модуль узла connect-modrewrite (из https://www.npmjs.org/package/connect-modrewrite) и добавил его в файл Grunt, предоставленный генератором AngularJS Yeoman Generator, например так:

// Yeoman's Gruntfile.js

  // placed outside the module.exports function.
  var modRewrite = require('connect-modrewrite');

  ...

  // modify the server config and add our modRewrite middleware.
  livereload: {
    options: {
      middleware: function (connect) {
        return [
          modRewrite([
            '!\\.html|\\.js|\\.css|\\.png$ /index.html [L]'
          ]),
          lrSnippet,
          mountFolder(connect, '.tmp'),
          mountFolder(connect, yeomanConfig.app)
        ];
      }
    }
  }

Это было здорово, но теперь я переключился на использование фреймворка модуля ui-router, если я должен делать глубокие ссылки (например) на http://myapp.com:9000/products получаю ответ:

Cannot GET /products

Очевидно, когда я перехожу на домашнюю страницу/страницу по умолчанию и нажимаю ссылку на http://myapp.com:9000/products все отлично и денди. Кто-нибудь изменил свой файл grunt, чтобы они могли использовать html5mode и ui-router с генератором AngularJS Yeoman? Заранее спасибо.


person Mike Sav    schedule 30.03.2014    source источник


Ответы (2)


Я никогда не использую connect-modrewrite, я всегда использую nginx. Иногда мне нужно использовать apache для следующей работы.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.html [L]
person wayne    schedule 30.03.2014

Вау! Плохо... Я включаю livereload не в ту задачу Grunt! Задача решена...

person Mike Sav    schedule 30.03.2014