Angular 8 app: window.open в новом окне всегда перенаправляет на индекс. html - PullRequest
0 голосов
/ 14 марта 2020

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

window.open(
      '/my-path',
      '_blank',
      'height=550,width=1400'
    );

This все прекрасно работает в localhost, но по какой-то причине, когда я помещаю sh в dev, новое окно всегда хочет перенаправить на index. html и просто перенаправляет меня на root, а не на / my -path.

Есть идеи о том, чего мне не хватает?

1 Ответ

2 голосов
/ 14 марта 2020

Я полагаю (поскольку проблема может иметь различные причины ...), что ваш сервер пытается обработать запрос на дочерний маршрут, но это должно быть сделано на клиенте Angular.

. Вы необходимо настроить сервер на откат до index.html для всех запросов.

Пример Apache:

RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

Пример Nginx:

try_files $uri $uri/ /index.html;

Подробнее в Angular документации .

Обновление для AWS:

AWS Усилить перенаправления по умолчанию до index.html, когда Ошибка 404, но это простое перенаправление. Из документов :

Большинство платформ SPA поддерживают HTML5 history.pushState () для изменения местоположения браузера без запуска запроса к серверу. Это работает для пользователей, которые начинают свой путь с root (или /index.html), но не работает для пользователей, которые переходят непосредственно на любую другую страницу. Используя регулярные выражения, в следующем примере настраивается перезапись 200 для всех файлов для индексации. html, за исключением указанных расширений c, указанных в регулярном выражении.

Следующие настройки должны работать для AWS Усиление:

// Original address
</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>

// destination
/index.html

// Redirect Type
200
...