Вроде бы элементарный вопрос по Angular -> Роутинг, НО...?

Имеется элементарная структура сайта:
5a45f5b8ae68b866811191.jpeg
http://localhost:4200 <-home-page
5a45f6a74f863033018766.jpeg
http://localhost:4200/cars <-cars-page
5a45f6b3ad30e859394422.jpeg
http://localhost:4200/not-found <- not-found
5a45f789803cc371167514.jpeg

Прописаны роуты
const appRoutes: Routes = [
  { path: '', component: HomePageComponent },
  { path: 'cars', component: CarsPageComponent },
  { path: 'not-found', component: NotFoundComponent },
  { path: '**', redirectTo: '/not-found' }
];


Локально все работает замечательно, НО когда все собираю и заливаю на хост (к примеру www.mysite.com), то когда перехожу по прямой ссылке, вкладки работают нормально, когда в адресной строке пишу руками www.mysite.com/cars, или www.mysite.com/blabla, то получаю ошибку
Ошибка
5a4638578bc77067853481.jpeg

Нашел информацию, что можно в app.modules.ts добавить строку
providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}],

Соответственно в адресной строке появляется #, т.е. www.mysite.com/#/, www.mysite.com/#/cars, www.mysite.com/#/not-found и все переходы работают без проблем и если руками прописываешь www.mysite.com/#/cars попадаешь на нужную страницу

Есть ли еще варианты решения данной задачи, что бы не использовать #

Спасибо за внимание! :)
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
@Niiix Автор вопроса
Решением было добавлением .htaccess
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

Ответ брал тут
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Вам нужно настроить ваш http-сервер так, что бы все запросы пересылались на файл index.html
Например для apache это можно сделать так:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt|svg|woff|ttf|eot)$
RewriteRule . index.html [L]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы