javascript window.history API при зареждане на първата страница

Опитвам се да внедря javascript рутер с window.history API. Използвам ui-router от дълго време, но искам да създам свой собствен рутер за моите по-малки приложения. Всичко изглежда добре, докато не срещна проблем като този: Обслужвам страницата си на localhost:8080/index.html. Насочвам в страницата със свойства, свързани с API на историята. Когато щракна върху маршрут, губя частта index.html. Например url става localhost:8080/home. Когато директно се опитам да отида в това състояние, както очаквате, получавам грешка 404 естествено. Как мога да принудя да маршрутизирам index.html до това състояние?


person erdysson    schedule 07.12.2015    source източник
comment
Можете ли да споделите някакъв код на вашия рутер? Например частта, която не работи според очакванията?   -  person Pandaiolo    schedule 07.12.2015
comment
Мога да дам връзка като пример. Намерих го, когато търсех решението и най-добрите практики. Същото се случва и тук.   -  person erdysson    schedule 08.12.2015
comment
проблемът е; след като маршрутизирате до няколко състояния, когато опресните браузъра, той се опитва да изпрати заявка   -  person erdysson    schedule 08.12.2015
comment
Ето как работи историята на HTML5, тя трябва да бъде съчетана с пренаписващ URL адрес на сървъра, така че всеки URL да се трансформира, за да извика index.html зад кулисите. Ако нямате достъп до сървъра, трябва да използвате/разработите вместо това класически рутер с hashbang: index.html#/my/route или не използвайте javascript маршрутизиране и просто разчитайте на архитектурата на папките на сървъра за организиране на html файлове   -  person Pandaiolo    schedule 08.12.2015
comment
Избягвах да използвам хеша, но предполагам, че няма начин без него. благодаря за отговора   -  person erdysson    schedule 08.12.2015


Отговори (1)


Историята на HTML5 (pushState и т.н.) работи чрез пренаписване на URL адреса от страна на клиента. Следователно е необходимо сървърът също да може да пренапише URL адреса и да зареди същия index.html файл, независимо от URL адреса.

Без това пренаписване на сървъра, двете възможни опции са:

  • Използвайте hashbang JavaScript рутер въз основа на URL като /idex.html#!/current/path

  • Не използвайте JavaScript за маршрутизиране и просто разчитайте на структурата на директорията на сървъра, за да обслужвате различен файл за всяка крайна точка

person Pandaiolo    schedule 08.12.2015
comment
Просто предизвиках себе си, за да създам ui-рутер като angular, crossroads.js или history.js. Реших да използвам hashbang и изглежда добре :) - person erdysson; 08.12.2015
comment
Готино ! Можете ли да потвърдите отговора ми, ако ви устройва? Благодаря ! - person Pandaiolo; 08.12.2015