Магистральный маршрутизатор не работает без # в URL
Я использую магистральный компоновщик, рули и requirejs для своего приложения с HtML5 и его одностраничного приложения. я использую backbone.history.start({ pushState:true })
который помогает избавиться от #, если я ввожу URL-адрес как localhost:9090/#abc, но если я вставлю URL-адрес localhost:9090/abc в браузер, то это будет не маршрутизация на нужную страницу, а переход к маршрутам в app.yaml,
По событию клика я могу перейти к URL localhost:9090/abc, но не тогда, когда я напрямую копирую и вставляю в браузер.
Я провел много исследований, чтобы решить проблему, но безрезультатно. Любое предложение будет полезно.. спасибо заранее
1 ответ
Сначала вы должны прочитать о #
в url - идентификатор фрагмента. Проще говоря: все до #
маршрутизируется на сервер, и все после #
маршрутизируется в JavaScript на браузере.
Поэтому, когда вы звоните localhost:9090/#abc
сервер ищет ресурсы на /
Я думаю, это ваше приложение JS и возвращает его в браузер. Затем браузер выполняет приложение JS, которое, в свою очередь, проверяет идентификатор после #
и решает, что отображать.
Также я немного озадачен тем, что вы пытаетесь сделать - пытаетесь ли вы избавиться от #
в то же время есть поддержка истории в приложении JS? Afaik это не может быть сделано.