角度2路由.htaccess

角度2路由.htaccess,.htaccess,angular,routing,angular2-routing,.htaccess,Angular,Routing,Angular2 Routing,我的路线有些问题。它可以在本地主机上正常工作,但当我将它放在服务器上并刷新页面时,会出现404错误 因此,我制作了一个.htaccess文件,并将其放在与我的index.html相同的位置: RewriteEngine On # If an existing asset or directory is requested go to it as it is RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] RewriteCond %{DOCUM

我的路线有些问题。它可以在本地主机上正常工作,但当我将它放在服务器上并刷新页面时,会出现404错误


因此,我制作了一个
.htaccess
文件,并将其放在与我的
index.html
相同的位置:

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
但它仍然不起作用我做错了什么? 我需要在我的角度路线中添加一些东西吗? 有人能帮忙吗

尝试删除
重写规则
替换上的斜杠前缀。例如:

 RewriteRule ^ index.html [L]
# Allow any request for CSS, JS and images straight through...
RewriteRule .\.(css|js|jpe?g|png|gif) - [L]
现在,这是相对于当前目录(index.html文件所在的目录)而不是文档根目录的


请注意问题的原因,但是
%{DOCUMENT\u ROOT}%{REQUEST\u URI}
%{REQUEST\u FILENAME}
相同,因此更常见的情况是将其写成:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
但是,在这之前加上一个已知资产的文件扩展名检查将更有效,以避免必须检查每个请求以确定它是文件还是目录(这相对比较昂贵)。例如:

 RewriteRule ^ index.html [L]
# Allow any request for CSS, JS and images straight through...
RewriteRule .\.(css|js|jpe?g|png|gif) - [L]

“把它和我的index.html放在同一个地方”-“同一个地方”到底在哪里?子目录?文档根目录?请稍候。。。您是否只是为了解决404错误而实现了这个
.htaccess
文件?您的
localhost
上没有
.htaccess
文件吗?我将尝试@w3dk,但是否有其他人认为我也需要这样做?我是否还需要添加其他内容?我不知道您是否需要添加“其他内容”。但是您说它在本地主机上工作正常,但在服务器上没有,并显示了您的
.htaccess
。我上面提到的一件事可能会阻止它在实时服务器上工作。你还没有回答我上面的问题。。。这个
.htaccess
文件在哪里?我现在使用Heroku来托管我的应用程序。htaccess文件现在与索引位于同一映射中,这就是映射模板/freemarker