У меня есть 2 приложения Angular, каждое из которых отлично работает в корневом каталоге домена веб-сервера Apache (хостера).
Теперь мне нравится размещать их в
App1 => https://example.com
App2 => https://app2.example.com
Папка поддомена "app2" - это "/ app2" из корневого каталога.
Если я помещаю App2 в каталог поддоменов, оба приложения все еще работают, но App2 только до тех пор, пока я не обновляю страницу (Я получаю 404 не найден).
Я провел некоторый поиск, но большинство примеров сосредоточено на подкаталогах, а не на поддоменах, я пытался использовать опцию сборки
ng build --prod --base-href "/app2/"
для app2, но есть многовозможные комбинации, чтобы попытаться, и я до сих пор не получил ни одну из них.
Так что любая помощь будет оценена, спасибо.
Редактировать:
Возможно, решение простое, но оно сводит меня с ума ...
Каждое из моих приложений Angular 8 работает нормально, если я помещаю их в корневой каталог со стандартным .htaccess (пример из angular.io):
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
Я создаю поддомен с помощью инструментов моего провайдера,Единственные параметры, которые я могу настроить для субдомена, это «имя» и «каталог», на который указывает субдомен.
В моем случае (живая среда, среда тестирования):
http://example.com => работает, файлы находятся в корне "/" с указанным выше .htaccess.
http://admin.example.com => не работает, файлы находятся в подкаталоге "/ admin4711" сПриведенный выше .htaccess.
При вызове поддоменов я получаю белую страницу, и в отладчике Chrome я вижу следующие ошибки:
Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec. polyfills-es2015.d08b2846b0483deb576c.js:1
Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec. runtime-es2015.de1f101ad38d40b1418d.js:1
Uncaught SyntaxError: Unexpected token '<' scripts.36dbbe192861c60ce1c6.js:1
Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec. main-es2015.10848fe141a43f167ec1.js:1
Эти ошибки НЕ возникают при запуске приложения в корневом каталоге.
Похоже, что веб-сервер неправильно интерпретирует файлы в поддомене.
Решено:
Рекомендованный htaccess из angular.io вводил в заблуждение для подкаталога (по крайней мере, для меня).
Ответ - заменить
%{DOCUMENT_ROOT}%{REQUEST_URI}
на
%{REQUEST_FILENAME}