2017-01-23 8 views
3

Если я принимаю Polymer starter kit, он хорошо работает локально. Я могу перейти к http://localhost:8080/, и все ссылки на 3 представления работают нормально.Приложение для веб-сервера с базовыми URL-адресами

Теперь, если я размещаю это приложение на веб-сервере (который используется совместно с другими приложениями) по URL-адресу, например http://myservername:8080/mywonderfulapp/, у меня возникают проблемы с маршрутизацией. Есть ли способ, которым я могу упомянуть приложение-маршрут, чтобы принять относительный URL?

Я попытался сделать изменения в HTML файлы, чтобы иметь относительные адреса

<link rel="import" href="./src/my-app.html"> 
<a name="view1" href="./view1">View One</a> 
<base href="/mywonderfulapp/"> 

, но я не могу показаться, чтобы исправить приложение маршрутизации аналогичным образом.

Все похожие вопросы здесь, на SO, похоже, о версии 1.0 для версии 1.0, а также упоминания о маршрутизации страницы.js и хеш-банга вместо URL-адресов, ориентированных на HTML5, и компонента приложения-маршрута.

Я бы предпочел, чтобы сделать минимальные изменения кода для обеспечения

  • тот же код работает локально, а также на удаленном хосте
  • приложение не зависит от базового URL, на котором он размещен - поэтому, желательно, я не должен упоминать «mywonderfulapp» (по указанному выше URL) в любом месте кода.
+0

Я думаю, что вы столкнулись с этой проблемой: http://stackoverflow.com/questions/39608956/polymer-error-on-reloading –

+0

Нет, это другая проблема. В этом случае для серверной маршрутизации требуется сопоставление определенных URL-адресов с index.html. – sudheeshix

+0

https://github.com/PolymerElements/polymer-starter-kit/commit/7082366bc258ae748837d3adfe754e70955180f9, которые могут иметь отношение к проблеме маршрутизации/страницы.js, у вас есть –

ответ

2

Ближайший я с этим до сих пор, заключается в следующем:

упомянуть заполнитель для URL префикс в шаблоне приложения-маршрута.

<app-route 
    route="{{route}}" 
    pattern="/:prefix/:page" 
    data="{{routeData}}" 
    tail="{{subroute}}"></app-route> 

, а затем использовать его в атрибуте href для якоря

<a name="view1" href="/[[routeData.prefix]]/view1">View One</a> 
<a name="view2" href="/[[routeData.prefix]]/view2">View Two</a> 
<a name="view3" href="/[[routeData.prefix]]/view3">View Three</a> 

Недостаток этого подхода заключается в том, что я должен использовать URL в качестве http://localhost:8080/mywonderfulapp/ даже при работе на местном уровне, но, по крайней мере, я дон При развертывании на моем удаленном веб-сервере больше не нужно изменять код.

+0

Отмечая это как принятый ответ, пока не появится лучший ответ. – sudheeshix

0

Как указано в комментариях, это была решена в подобной публикации на stackoverflow.com/questions/39608956/polymer-error-on-reload ИНГ

примечание стороны для firebase пользователей - если развернуть эта же версия стартового набора для firebase и сделать firebase в CLI, эта проблема будет возникать даже в локальном хосте, так что вам понадобится исправление выше, даже там.

+0

Спасибо за ваш ответ. Но опять же, как указано в ответ на этот комментарий, который вы упомянули, это не та же проблема. В другом случае 404 происходит, когда пользователь пытается перейти непосредственно к определенному URL-адресу, что требует некоторой маршрутизации на стороне сервера для сопоставления запрошенного URL-адреса с index.html, чтобы затем Polymer мог выполнить свою маршрутизацию на стороне клиента.В моем случае я начинаю с домашней страницы, и когда я пытаюсь перейти к другим представлениям, нажимая на ссылки, я получаю 404 из-за неправильного пути для html-файлов. Мне кажется, что код приложения и связанный с ним JS-код должны быть осведомлены о моем базовом URL-адресе. – sudheeshix

 Смежные вопросы

  • Нет связанных вопросов^_^