我在Angular 4中创建了一个新组件并添加了它的路径'account'。
当我运行ng serve
主页时,会显示一个指向帐户页面的链接。
点击帐户页面链接帐户页面打开。如果我刷新页面,它就可以工作。
问题在于,当我使用ng build
进行构建并将构建上传到apache时。如果我点击“帐户”链接,则会打开帐户页面。
但是,如果我直接刷新或尝试开帐户路线,我会收到404错误。
如果我添加'use hash',那么它与'#'一起使用,但我不想要这个。
我正在使用棱角分明4.2.4
答案 0 :(得分:7)
您可以查看Link如何在Apache上部署Angular应用程序。
如何在apache中提供index.html
这可以通过添加.htaccess文件(在index.html所在的同一目录中)以及以下内容来实现。
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule>
答案 1 :(得分:1)
尝试在nginx配置文件中添加query_string
location / {
alias /var/www/my_project/dist/;
index index.html;
try_files $uri $uri/ /index.html?$query_string;
}
答案 2 :(得分:1)
在后端(服务器端)只是将所有(404)错误/无法识别的请求映射到索引(包括所有角度构建脚本)。然后它返回索引。在前端,你可以得到你需要的东西。它映射到你需要的页面。
答案 3 :(得分:0)
只需将其放在根目录下的.htaccess上
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html
# to allow html5 state links
RewriteRule ^ index.html [L]