Маршруты на производстве приложения Angular 7 завершаются ошибкой с ошибками сервера 500 или 404

Это из моей собственной библиотеки, вернет разницу между месяцами между двумя датами.

public static int MonthDiff(DateTime d1, DateTime d2)
{
    int retVal = 0;

    // Calculate the number of years represented and multiply by 12
    // Substract the month number from the total
    // Substract the difference of the second month and 12 from the total
    retVal = (d1.Year - d2.Year) * 12;
    retVal = retVal - d1.Month;
    retVal = retVal - (12 - d2.Month);

    return retVal;
}
0
задан Suren Konathala 28 February 2019 в 21:48
поделиться

1 ответ

После многих испытаний я нашел решение. На самом деле это обсуждалось на Angular Github на https://github.com/angular/angular/issues/27991

1. Создайте свой проект с помощью команды, подобной ng build --prod --base-href /toys/. Если вы хотите загрузить сайт как www.mysite.com/toys.

2. Выше будет сгенерировано project-home/dist/toys. Создайте файл .htaccess в этой папке со следующим содержанием

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) index.html [NC,L]

3. Скопируйте источники в project-home/dist/toys в папку домена вашего сайта. На виртуальном хостинге это обычно будет похоже на /public_html/yoursitename/.

В моем примере у меня был такой файл /public_html/ngstrorefront/toys/.htaccess. Обратите внимание, что .htaccess должен находиться в папке на уровне ваших проектов Angular 'index.html, а не в корне вашего сайта.

Ваш сайт также должен работать с маршрутами.

Примечание:

  1. Обычно общий хостинг не позволяет нам изменять какие-либо настройки Apache http.conf. Если они это сделают, то вместо .htaccess лучше использовать этот.
  2. Измените права доступа к файлу .htaccess только для чтения. Я видел несколько сайтов, атакованных с помощью этого файла.
0
ответ дан Suren Konathala 28 February 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: