Backbone.js PushState маршрутизирует.htaccess, работающий только как хеш, но больше нигде

У меня есть сайт domain.com например. У меня есть backbone.js с pushstate и fallback, и когда я захожу на domain.com/about, он загружает страницу index.html и pushstates примерно до. все работает. но если я хочу перейти в каталог со страницей, например: www.domain.com/bio/moreinfo, например, он не работает и выбрасывает неверную страницу. если я делаю это в IE, он работает нормально. мой файл htaccess имеет следующее:

RewriteEngine on
# html5 pushstate (history) support: 
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
</ifModule>

если я перейду прямо на страницу domain.com/bio/moreinfo, то она исчезнет (я думаю, потому что мой сервер хочет перейти в био каталог? или, может быть, мне нужно по-другому управлять маршрутами в магистрали - просто он работает на ударах так что это должен быть какой-то странный случай с каталогом состояний push, когда #bio/info не совпадает с apache и / bio / info. Любая помощь приветствуется.

1 ответ

Решение

Хорошо используя ответ в другом предложенном посте, который должен был сделать <base href="/" />в файле index.html. Это фактически сделало подкаталоги в моей pushState работой! просто было предложено.. но потом взамен он сломал мой IE, но я исправил это, добавив дополнительный код в свой INIT магистрали

 Backbone.history.start({ pushState: Modernizr.history, silent: true });
if(!Modernizr.history) {
    var rootLength = Backbone.history.options.root.length;
    var fragment = window.location.pathname.substr(rootLength);
    var search = window.location.search;
    Backbone.history.navigate('/#' + fragment + search, { trigger: true });
} else {
    Backbone.history.loadUrl(Backbone.history.getFragment())
}
Другие вопросы по тегам