Angular应用程序无法在子目录中找到文件

时间:2019-06-28 13:21:33

标签: angular typescript apache mod-rewrite

我想在Apache子目录中部署Angular应用程序。我添加了.htaccess配置:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /admin/
  RewriteCond %{REQUEST_FILENAME} -s [OR]
  RewriteCond %{REQUEST_FILENAME} -l [OR]
  RewriteCond %{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^.*$ - [NC,L]
  RewriteRule ^(.*) index.html [NC,L]
</IfModule>

我使用以下命令来编译代码:

ng build --prod --base-href /admin/

但是当我打开一页时出现此错误:

Error: Uncaught (in promise): e: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":404,"statusText":"Not Found","url":"http://185.185.185.185/admin/api/transaction_notes/unique_id/219","ok":false,"name":"HttpErrorResponse","message":"Http failure response for http://185.185.185.185/admin/api/transaction_notes/unique_id/219: 404 Not Found","error":"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL /admin/api/transaction_notes/unique_id/219 was not found on this server.</p>\n<hr>\n<address>Apache/2.4.18 (Ubuntu) Server at 185.185.126.15 Port 80</address>\n</body></html>\n"}

您能给我一些建议如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您的错误似乎与您使用相对URL的API调用有关,但与应用程序自身加载无关。如果这是唯一的问题,则可以通过在网址前面加一个斜杠来简单解决此问题:

this.http.get('/api/transaction_notes')

代替this.http.get('api/transaction_notes')

对于其他任何事情,您可能必须提供更多的信息和代码。