Статический сервер Скалли не будет обслуживать URL-адреса с кодированным в процентах пространством

#scully #scullyio #angular-scully

Вопрос:

Мое приложение angular содержит маршруты, закодированные в процентах. Пример /Страница 1

Когда я запускаю свое угловое приложение, ng serve все работает нормально.

Но когда я запускаю статический сервер Скалли и посещаю «http://localhost:1668/Page 1», браузер показывает

Не удается ПОЛУЧИТЬ /Страница 1

Я заглянул в свой ./dist/static/assets/scully-routes.json и вижу ,{"route":"/Page 1"} .

Такое поведение не происходит на маршрутах без пробела.

Например http://localhost:1668/Page2 , работает просто отлично.

Ответ №1:

Статический сервер Скалли обслуживает файлы, соответствующие неэкранированному URI. В вашем случае, когда вы войдете http://localhost:1668/Page 1 , сервер попытается найти папку с именем /Page 1 , которой не существует.

Решение 1: Внешняя сторона

После того, как Скалли создаст dist/static папку, переименуйте все экранированные имена в их неэкранированное имя. Например /foo bar/ /foo bar/ , для .

Решение 2: На Стороне Сервера

Используя nginx, я добавил эту строку в свой nginx.conf :

 try_files $uri $uri/ $request_uri/index.html /index.html;  

$uri экранируется, а $request_uri не отображается.

Он попробует /foo bar , тогда /foo bar/ и тогда /foo bar/index.html , который найдет совпадение.

Совет

Если вы можете, просто используйте ASCII в своих URL-адресах.