htaccess重写到dist文件夹并将AngularJS html5mode设置为true

htaccess重写到dist文件夹并将AngularJS html5mode设置为true,angularjs,apache,.htaccess,html5mode,Angularjs,Apache,.htaccess,Html5mode,我在AngularJS中有一个应用程序,我需要将html5mode设置为true,以便从URL中删除散列/#/。缩小版的应用程序位于dist文件夹中 问题:我的目标是将流量重写到dist文件夹,并允许启用HTML5模式。有人能帮忙吗 我可以通过设置 并添加$locationProvider.html5Mode(true)至应用程序配置,并位于ui路由器文件的底部 所有这些都在开发模式下工作,在这种模式下,它通过Gulp使用NodeJS。 当我将应用程序移动到Apache上的其他环境时,安装会出现

我在AngularJS中有一个应用程序,我需要将html5mode设置为true,以便从URL中删除散列
/#/
。缩小版的应用程序位于
dist
文件夹中

问题:我的目标是将流量重写到
dist
文件夹,并允许启用HTML5模式。有人能帮忙吗

我可以通过设置
并添加
$locationProvider.html5Mode(true)至应用程序配置,并位于ui路由器文件的底部

所有这些都在开发模式下工作,在这种模式下,它通过Gulp使用NodeJS。 当我将应用程序移动到Apache上的其他环境时,安装会出现问题

问题是:

A.应用程序无法加载任何资产,因为它正在服务器根目录中查找这些资产

B.应用程序无法重新加载并登录到请求的URL。它给出了一个404错误

在应用程序中没有启用HTML5模式的情况下,我使用此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\u name/app/webapp/(dist)
上,在其他环境中,它将位于
https://app.example.com/(地区)

我也试过设置
,但也不起作用。它只会将
dist
文件夹添加到资产路径,并且在开发中也不可用,因为该应用程序不会从
dist
提供服务

基本上,这些部件都能工作,但如果把它们放在一起就失效了

我已经找到了很多答案,但都没有成功:


如果您有Apache2,请定义一个后备资源,而不是与重写规则抗争

.htaccess文件中的这两行代码将解决您的问题:

FallbackResource /index.php
DirectoryIndex index.html
第二行是必要的,因为只有谷歌浏览器


您正在使用Apache?创建一个直接指向
dist
文件夹的新VHOST。保持简单。