Angular 8 / Apache: htaccess для приложения root и sudomain - PullRequest
1 голос
/ 28 октября 2019

У меня есть 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}

1 Ответ

0 голосов
/ 28 октября 2019

Я бы проверил настройки вашего сервера / облака. Похоже, это может быть возможной проблемой DNS.

Кроме того, убедитесь, что кэш локального браузера очищен, когда все настроено. В противном случае локальный кеш может указывать на информацию о старых настройках и приводить к невозможности загрузки сайта. Это укусило меня в прошлом, когда я знал, что мой сервер настроен правильно, но мой сайт по-прежнему не загружался.

...