2015-12-14 3 views
0

Я сделал SPA в angularjs, когда я запустил его в браузере, он показал мне «#» в адресной строке. Поэтому я включил html5Mode. Это успешно удалило «#» из URL-адреса, но когда я пытаюсь перезагрузить страницу, это дает ошибку 404: страница не найдена. Я пробовал писать в .htaccess из этого URL: htaccess redirect for Angular routesКак перезагрузить страницу, если html5mode включен в angularjs?

Ничего не меняется. Я также следовал за грубыми ответами, но это тоже не помогло.

ответ

0

Вы правильно включили режим html5?

Загляните на answer на вопрос, касающийся режима html5 mode/hashbang.

Вы добавили <base href="/"> в голову своего html?

+0

yes @ user3632710 Да, я правильно включил режим html5, как описано в вашей ссылке, но проблема перезагрузки все еще сохраняется –

0

Вам необходимо настроить маршруты вашего сервера, чтобы вернуть индексный файл для всех угловых URL-адресов.

Обычно вы регистрируете свой api на какой-либо специальной конечной точке (как mysite.com/api/v1), и если url не соответствует этому шаблону, возвращайте index.html файл с угловой логикой бутстрапа.

Это происходит потому, что без режима html5 все запросы отправляются на URL-адрес корневого сервера (mysite.com/ даже если ссылка - mysite.com/#!/profile), но когда вы включаете режим html5, запросы отправляются как объявленные в угловом поэтому, если у вас есть маршрут «/» с href для профиля (/ profile) и перезагрузите страницу (mysite.com/profile), запрос будет отправлен на mysite.com/profile, и он ответит 404, поскольку он настроен на return index file только для '/' url

+0

спасибо @ Если вы объяснили мне очень четко. Проблема все еще существует. Я теперь перенаправлены маршруты к index.html, используя следующую LOC $ routeProvider.when ('/', { \t \t \t templateUrl: 'WebApp/index.html' \t \t \t}); Я все еще получаю 404. –