Магистральный маршрутизатор не работает без # в 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 это не может быть сделано.

Другие вопросы по тегам