Я задаю этот вопрос, потому что я не уверен, является ли решение моей проблемы с внешнего или внутреннего интерфейса.
В принципе, у меня проблема в том, что при перезагрузке страницы по другому маршруту, чем в начале "/"
, я получаю ошибку "not found 404"
, я видел несколько возможных решений, таких как "хэш", но для проблем с SEO Я не могу сделать это. Я также видел, что есть конфигурации для решения этой проблемы, но эти конфигурации находятся на серверах Apache или в ISS.
Мое приложение работает нормально при использовании angular-cli с ng serve
, но когда я запускаю
ng build --prod --base-href=./ and --deploy-url=./
маршруты не работают при перезагрузке страницы.
Например:
http://localhost/my_folder_compilated/programa/detalle-programa/5cf7d27faa8e180017211754 --> 404 not found!
Мне нужно развернуть его на сервере Heroku или, если он отсутствует, работать на nodejs.
Как я могу решить эту проблему?
// this is the route that I have in my app.routing.ts
{path: 'programa/detalle-programa/:programaId', component:
DetalleProgramaComponent},
{path: '**', component: NotFoundComponent}
Примечание
Я думаю, что решение находится в бэкэнде. Я использую nodejs (экспресс), но не могу это исправить.
Обновление
Я использую этот код и хорошо работает для моих маршрутов,
const distDirectory = path.join(__dirname, 'public');
app.get('*', function (req, res, next) {
const file_path = path.join(distDirectory, req.url.split('?').shift());
console.log(file_path)
if (fs.existsSync(file_path)) next();
else res.sendFile(path.join(distDirectory, 'index.html'));
});
app.use(express.static(distDirectory));
кроме этого:
localhost/programa/detalle-programa/5cf7d27faa8e180017211754
и в консоли это маршрут, который я получаю:
...public\programa\detalle-programa\runtime.366eb317d0165de30d51.js
очевидно, что он не существует, и он отмечает ошибку в моих файлах
Обновление 2:
Папка на моем сервере heroku:
public --> here my files, and the index.html
и мой index.html:
<head>
<meta charset="utf-8">
<title>title</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="styles.51e30e538d2560c1a9e9.css">
</head>
<body>
<app-root ></app-root>
<script type="text/javascript" src="/runtime.a5dd35324ddfd942bef1.js">
</script>
<script type="text/javascript" src="/polyfills.3eb7881d3a00da6c675e.js">
</script>
<script type="text/javascript" src="/scripts.dd86f002a5aef1b13f0f.js">
</script>
<script type="text/javascript" src="/main.23ac360bc829b49bc07d.js">
</script>
</body>
</html>
Проблема, которая возникает со мной, заключается в том, что все запросы, которые я получаю, возвращают мой файл index.html, поэтому обещания моих служб не могут быть решены.