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())
}