Angular URL在构建项目中不起作用,但在localhost:4200上起作用

时间:2019-02-09 03:31:02

标签: angular typescript routing

当我打开一个子URL时,它可以在我的本地环境(例如if (check_remote_video_exists('YOUR_VIMEO_VIDEO_URL')) { // video exists, do stuff } else { // video does not exist, do other stuff } )上使用。但是,在我使用http://localhost:4200/login构建项目之后,所有子URL在实时服务器上均无法正常工作。

如果我使用ng build --prod打开子URL,则该URL在已构建的项目中有效,但如果我重新加载该URL,则该URL不起作用(404)。

我的路由策略有问题吗?

index.html

this.router.navigate(['/system']);

app.module.ts

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>title</title>
  <base href="/">
</head>
<body>

  <app-root></app-root>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

检查是否在index.html中设置了基本href

如果需要,您还可以使用以下命令来更新它们。

ng build --base-href /

ng build --bh /

ng build --prod --bh /

这将覆盖index.html中设置的基本href,如果未设置,则对其进行设置。根据部署进行设置并进行相应的修改。由于我不熟悉您的部署策略,因此无法发表评论

如果您拥有资产的其他文件夹,则您可能也对--deploy-url选项感兴趣 请参阅[https://shekhargulati.com/2017/07/06/angular-4-use-of-base-href-and-deploy-url-build-options/]

答案 1 :(得分:0)

我找到了针对我的错误的解决方案,该解决方案与我的 .htaccess 文件有关。 这里的链接可以帮助我解决此错误。

HOWTOs / Making sure .htaccess and mod_rewrite are working as they should

  • 更新您的虚拟主机文件sudo nano /etc/apache2/sites-available/000-default.conf
  • DocumentRoot /var/www/html下添加以下代码

    <Directory /var/www/html/projectFolder>
       # Don't show directory index
       Options -Indexes +FollowSymLinks +MultiViews
          
       # Allow .htaccess files
        AllowOverride All
          
       # Allow web access to this directory
       Require all granted
    </Directory>

  • 然后重新启动服务器