Size: a a a

Clojure — русскоговорящее сообщество

2020 June 08

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
с другой стороны, если внешние линки не нужны, то можно вообще забить на это.
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
Alex Bubnov
А если для простоты на стейджинге у тебя stage.some.domain/app,  а на проде - app.some.domain?
Пользователь может прийти на любой URL внутри базового, как ты определишь базу в таком случае?
ну в большинстве случаев у тебя стоит реверс прокся, которая за собой скрывает сервер веб страницы и собственно апи сервак
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
или я плохо понял о чем речь
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
ну и hostname как бы прилетит корректный
источник

S

Sergey in Clojure — русскоговорящее сообщество
Vlad Lisovsky
Разницп в том, что если его # нет, то сервер должен способен обработать роуьтнг, который на самом деле front end
В том же nginx это, кажется, одна строка для локейшена /. Проблемы нет. То есть если роутер написан правильно или под капотом использует js-либу, где это решено, проблем не будет. С base url тоже не должно быть
источник

S

Sergey in Clojure — русскоговорящее сообщество
Kostyantin Randomname
или я плохо понял о чем речь
Мне кажется негативный опыт автора сообщения связан с какой-то неправильной настройкой чего-то
источник

S

Sergey in Clojure — русскоговорящее сообщество
Единственное, что можно придумать, это зашитые урлы начинающиеся от "/", тогда проблема будет, если потом приложение положить не от корня домена, а где-то в папках
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Sergey
В том же nginx это, кажется, одна строка для локейшена /. Проблемы нет. То есть если роутер написан правильно или под капотом использует js-либу, где это решено, проблем не будет. С base url тоже не должно быть
там не совсем одна, так как под ним согут быть и другие роуты, не связанные с SPA
источник

S

Sergey in Clojure — русскоговорящее сообщество
От ситуации зависит, конечно, но даже гугл отправляет на SO на верное решение https://stackoverflow.com/a/44098311
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
что в нем верного?
источник

S

Sergey in Clojure — русскоговорящее сообщество
Maxim Penzin
что в нем верного?
try_files $uri $uri/ /index.html;
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
так почему это верно?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
это вариант решения пхпшника
источник

S

Sergey in Clojure — русскоговорящее сообщество
Maxim Penzin
так почему это верно?
Потому что работает?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
нет, ну то есть если отдавить на любой возможный урль /index.html  это правильный вариант, то конечно
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
но это как бы далеко не всегда так
источник

S

Sergey in Clojure — русскоговорящее сообщество
Выше люди писали, что это прямо какая-то боль. Ну вот в случае, когда у нас на домене только SPA, это будет работать. Да, когда всё сложнее, надо уже смотреть на контекст, но проблема тоже несложно решаемая
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
давайте по порядку чтоли.
есть SPA smth с роутами /a и /b.

если оно написано с hash-based routing, оно может выглядеть, например, как stage.my.domain/smth#/a (тестовое окружение) и smth.my.domain#/a в проде. в этом случае артефакты со стейджа на прод промоутятся простым копированием, в конфиге nginx нет try_files, в в случае прихода пользователя на внутренний url приложения базовый url приложения тривиально вычисляется из window.location.pathname и window.location.hash.

если оно написано с history-based routing, начинаются последствия. в случае прихода пользователя на внутренний url приложения, stage.my.domain/smth/a, нам нужно
1 - всегда отдавать index.html на все внутренние url приложения(try_files в nginx на location /smth)
2 - на старте SPA нужно понять, а куда вообще пришел пользователь, потому что текущий url - это base url + route, и где между ними граница - хз.
в Js п.2 принято(react-router, angular) решать запеканием base url в приложение при сборке, что приводит к необходимости либо точной унификации окружений, либо правилу "все spa на поддоменах", либо невозможности промоушена копированием.

да, чисто в теории можно вычислить base url отрезая префиксы location и пытаясь выбрать роут, но это как-то довольно спорно звучит.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Alex Bubnov
давайте по порядку чтоли.
есть SPA smth с роутами /a и /b.

если оно написано с hash-based routing, оно может выглядеть, например, как stage.my.domain/smth#/a (тестовое окружение) и smth.my.domain#/a в проде. в этом случае артефакты со стейджа на прод промоутятся простым копированием, в конфиге nginx нет try_files, в в случае прихода пользователя на внутренний url приложения базовый url приложения тривиально вычисляется из window.location.pathname и window.location.hash.

если оно написано с history-based routing, начинаются последствия. в случае прихода пользователя на внутренний url приложения, stage.my.domain/smth/a, нам нужно
1 - всегда отдавать index.html на все внутренние url приложения(try_files в nginx на location /smth)
2 - на старте SPA нужно понять, а куда вообще пришел пользователь, потому что текущий url - это base url + route, и где между ними граница - хз.
в Js п.2 принято(react-router, angular) решать запеканием base url в приложение при сборке, что приводит к необходимости либо точной унификации окружений, либо правилу "все spa на поддоменах", либо невозможности промоушена копированием.

да, чисто в теории можно вычислить base url отрезая префиксы location и пытаясь выбрать роут, но это как-то довольно спорно звучит.
если нте надобности, чтобы урли индексировались поисковиками-  то вполне
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
Alex Bubnov
давайте по порядку чтоли.
есть SPA smth с роутами /a и /b.

если оно написано с hash-based routing, оно может выглядеть, например, как stage.my.domain/smth#/a (тестовое окружение) и smth.my.domain#/a в проде. в этом случае артефакты со стейджа на прод промоутятся простым копированием, в конфиге nginx нет try_files, в в случае прихода пользователя на внутренний url приложения базовый url приложения тривиально вычисляется из window.location.pathname и window.location.hash.

если оно написано с history-based routing, начинаются последствия. в случае прихода пользователя на внутренний url приложения, stage.my.domain/smth/a, нам нужно
1 - всегда отдавать index.html на все внутренние url приложения(try_files в nginx на location /smth)
2 - на старте SPA нужно понять, а куда вообще пришел пользователь, потому что текущий url - это base url + route, и где между ними граница - хз.
в Js п.2 принято(react-router, angular) решать запеканием base url в приложение при сборке, что приводит к необходимости либо точной унификации окружений, либо правилу "все spa на поддоменах", либо невозможности промоушена копированием.

да, чисто в теории можно вычислить base url отрезая префиксы location и пытаясь выбрать роут, но это как-то довольно спорно звучит.
есть такая штука как window.location.hostname
источник