У меня есть маршрутизатор с page.js, который направляет индексную страницу (на '/'
), страницы проекта (в '/projects/<projectId>/'
) и статические (изображения) файлы. Это выглядит, в основном, как это:Как я могу маршрутизировать/обслуживать статические файлы с помощью page.js и Apache?
JavaScript
init: function() {
page.base('/');
// IndexPage
page('', function (context, next) {
displayIndexPage();
});
// ProjectPage
page('projects/:project', function (context, next) {
displayProjectPage();
});
// image files
page(/^.+\.(jpg|png|gif|bmp)$/, function (context, next) {
window.location = '/' + context.path;
});
// Exit the middleware
page();
}
В моей /projects/
папке, у меня есть .htaccess
файл со следующим:
Баш
Options +FollowSymLinks
RewriteEngine On
# html5 pushstate (history) support
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !index
RewriteRule ^.*$ ../index.html [QSA,L,NE]
Маршрутизация, как правило, работает правильно. Когда я перехожу к статическому файлу изображения, .htaccess
бросает меня за пределы моего одностраничного приложения, и статический файл появляется на экране. Однако, когда я перемещаюсь обратно в своем браузере, я не повторно вводил свое приложение; Изменения URL, но навигации нет, файл изображения остается на экране. Никакое количество popping или pushing оттуда не возвращает меня в мое приложение.
Я не совсем уверен, что я задаю правильный вопрос здесь; не уверен, что это касается обслуживания статических файлов, так же как и для маршрутизации одностраничного приложения ... Я был бы доволен любым ответом, который позволяет page.js выбирать резервную копию на popState
.
EDIT: Я освобождаю файлы от своего RewriteRule
, потому что мне нужно обслуживать их на страницах, созданных моим приложением. Однако, когда посетитель нажимает на изображение на отображаемой странице, я хотел бы, чтобы браузер просто отображал это изображение без разметки.
Кроме того, что я делаю неправильно с моими укрепленными блоками коды? Почему подсветка синтаксиса не работает? – ericsoco
О, oops, SO не поддерживает защищенные блоки кода. Слишком привык к GH, я думаю. Thx @ ariful-haque. – ericsoco
Ваша ссылка на [Page.js] (https://visionmedia.github.io/page.js/) не отображается, потому что вы забыли добавить https: // '. – usandfriends