Я запускаю приложение AngularJS в S3 и обслуживаюсь в дистрибутиве CloudFront.Я выбрал дистрибутив CloudFront для производительности и простоты установки сертификата SSL.SPA находится в режиме HTML5, чтобы иметь чистую структуру URL.
Я настроил html5Mode в своем файле app.js.
.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]).config(function($locationProvider){
$locationProvider.html5Mode(true);
})
В своем файле index.html я установил базовый тег следующим образом:
<base href="/" />
У меня естькорзина S3, обслуживающая статический веб-сайт, без каких-либо правил перенаправления.

Наконец, на своей панели управления Cloudfront я установил ответ об ошибке следующим образом:

Я сделал это для 404 и 403 ответов.Когда я пытаюсь открыть ссылку на не корневой путь (/ тарифы), он отлично работает в Chrome и Firefox.Однако в Safari меня перенаправляют на корневой путь.Очевидно, что хэш в Safari и ios не удаляется, если вы используете протокол https.
Я не уверен, как решить проблему, связанную с Safari.Если у кого-то есть опыт решения этой проблемы, я был бы признателен за некоторые рекомендации.