У меня есть приложение в AngularJS, где мне нужно установить html5mode в true, чтобы удалить хеш /#/
из URL. Приложение в минитипированной версии находится в папке dist
.htaccess переписать в папку dist и установить AngularJS html5mode true
ВОПРОС: Моя цель - переписать трафик на папку dist
и разрешить включение html5mode. Может ли кто-нибудь помочь?
я могу получить html5mode работать, установив <base href="/" />
и добавления $locationProvider.html5Mode(true);
в приложении конфигурацию и в нижней части интерфейса маршрутизаторы файла.
Все это работает в режиме разработки, где используется NodeJS через Gulp. Когда я переношу приложение в другие среды, находящиеся на Apache, у установки есть проблемы.
Проблемы:
A. Приложение не может загружать какие-либо активы, потому что он ищет их в корневом каталоге сервера.
B. Приложение не может перезагрузить и приземлиться на запрошенный URL. Это дает ошибку 404.
Без использования html5mode в приложении, я использую этот htaccess для перенаправления на папку dist
, и она отлично работает.
# This first part is not relevant for the question but is included for practical purposes. It rewrites traffic to HTTPS
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(app\.)?example\.com$ [NC]
RewriteCond %{HTTPS} !=on
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]
Options +FollowSymLinks
RewriteCond %{REQUEST_URI} !(.*)dist
RewriteRule ^(.*)$ dist/$1 [L]
Нужно работать то же самое на разностных средах, чтобы я мог использовать его как на локальных, так и на других средах. О местном было бы на localhost/project_name/app/webapp/(dist)
и в других средах, это было бы на https://app.example.com/(dist)
Я также попытался установить <base href="/dist/" />
, но он также не работает. Он добавляет только папку dist
в путь к активам и также не будет использоваться при разработке, потому что приложение не будет отправлено с dist
.
В основном детали работают, но при объединении они терпят неудачу.
Я прошел через многие SO ответы уже без успеха:
in html5mode(true) views are not loading in page refresh in angular js
AngularJS + html5Mode + custom fallback
angularjs ngroute with html5mode(true) on apache fails
AngularJS: html5Mode(true) causing 404 error
Вы используете Apache?Создайте новый VHOST, который указывает прямо в вашу папку 'dist'. Будь проще. – lin