Как установить "страницу по умолчанию" для Angular в Azure Web App на плане обслуживания Linux
Я могу развернуть Angular для Azure Web Apps в плане обслуживания Linux, и он отлично работает при нажатии {myapp}.azurewebsites.net/index.html
Я могу перемещаться внутри приложения, как и ожидалось.
При попадании в root {myapp}.azurewebsites.net он просто отображает hostingstart.html.
Это не помогает удалить hostingstart.html, как предлагается в некоторых статьях.
Если я пытаюсь напрямую перейти по URL-адресу подстраницы (например, {myapp}.azurewebsites.net/mypage), я получаю сообщение об ошибке: Cannot GET / mypage (это работает при локальном запуске)
Я подозреваю, что мне нужно настроить страницу по умолчанию, но я не могу найти ее в настройках приложения в Azure Web App. (Я думаю, что это доступно только в тарифных планах Windows, но не в тарифных планах Linux).
Как правильно выполнить развертывание в службе приложений Linux, чтобы это работало?
Я нашел много статей по этой проблеме, но все они, кажется, охватывают План обслуживания Windows App.
1 ответ
Вам нужно добавить правила перезаписи URL на сервер Apache, чтобы любой запрос страницы перенаправлялся на Angular. index.html
Вставьте это в свой корень .htaccess
файл:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
(Источник: https://github.com/angular/angular/issues/11884)
РЕДАКТИРОВАТЬ: Если используется серверная часть node.js, см. Этот ответ SO для справки: /questions/8005174/kak-obrabatyivat-marshrut-marshruta-angular2-v-nodejs/8005191#8005191