首页 > 解决方案 > Angular 6 应用程序如何在 wamp 上本地提供它以及如何将丢失的文件导入索引页面

问题描述

编辑#2

在我的www/目录中,我有我的服务器脚本和.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([\w-]+)$ api.php [L]
DirectoryIndex api.php

#RewriteCond %{REQUEST_URI} !echo.php
#RewriteRule .* echo.php?ua=%{HTTP_USER_AGENT}&https=%{HTTPS} [L]

SetEnvIf Origin "^http(s)?://(.+\.)?(dev.local\.com|localhost:8100|localhost:4200)$" ORIGIN=$0
Header always set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
Header merge Vary Origin

Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Headers "Content-Type, cookie"
Header set Content-Type "application/json"
Header set Access-Control-Allow-Methods "GET, POST"
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

在我的桌面上,我有我运行的角度项目:

ng build --prod --aot

我在里面有一个文件夹,dist/angular/里面有所有相关的文件。

我将dist/angular/内容放在www/目录中并尝试运行该index.html文件,但出现以下错误:

在此处输入图像描述

我为我的组织完成了一个应用程序,基于 Angular 6 和 PHP 作为服务器端,我需要在本地对其进行测试。我们的大部分作品都将在本地制作,因为老板不希望任何信息通过网络传输(非政府组织数据)。

我跑了:

ng-build --prod

我有dist文件夹。但是我打开了 dist 文件夹,不知道该怎么做,以及如何将它放在 wampserver 上让用户从他们的计算机上测试它。

我用它选择的关于添加的答案检查了这个链接http-server

当使用wampserverhttp-server作为本地服务器来为我们的应用程序提供服务时,使用将是一个不错的选择吗?

编辑:

当我打开 index.html 文件时,出现 5 个错误:

在此处输入图像描述

index.html脚本:

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Registration System</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">


  <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> -->

  <!--Bootstrap 4-->
  <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  -->
<link rel="stylesheet" href="styles.aa5ea5c31cd0cd659c6e.css"></head> 
<body>
  <app-root></app-root>
<script type="text/javascript" src="runtime.2b56e49bc4acc7387a7f.js"></script><script type="text/javascript" src="polyfills.6a1700e5ae732a3a8f93.js"></script><script type="text/javascript" src="main.35b38c7c508a8567ed23.js"></script></body>
</html>

标签: phpangularwampangular6wampserver

解决方案


托管 Angular 应用程序时,您可以直接获取dist文件夹的内容并将其放入您的htdocswww文件夹中。好吧,至少在最简单的情况下。

不过有一些注意事项。

当您想在服务器的根目录中自行提供服务时,上述方法效果很好。

如果您从子文件夹托管 Angular 应用程序,则需要通过更改 index.html 文件中的这一行来更改应用程序的基本 URL:

<base href="/path/to/folder/">

此外,如果您还没有,您需要为 PHP 后端正确配置CORS

最后,您需要处理路由。这需要.htaccess文件中的条目按如下方式路由:

  1. 任何应该去 Angular 应用程序的路径都必须路由到它的index.html.
  2. 所有 JavaScript、CSS、字体和图像文件都应该正常路由。
  3. PHP 文件仍应正常路由,最好路由到子文件夹以保持干净。我喜欢用/api这个。

例如,我有一个位于/api文件夹中的 PHP 后端和一个从根目录提供服务的 Angular 应用程序。

所以在我的服务器上,在www文件夹中,我有我index.html的和各种 JavaScrpit 文件。PHP 文件在下面www/api.htaccess路由负责将所有 API 调用/www/api、所有 JavaScript、图像、字体和样式路由到它们所在的位置,以及所有其他路径到/www/index.html.

这就是它的要点。只要.htaccess您的 CORS 设置正确,您应该没有问题。

编辑

根据您显示 404 错误的更新,我会说您的主要问题是在.htaccess. 查找 Apache 的 URL 重写。

编辑

这个答案显示了一个简单的.htaccess设置,如果您安装在网站的根目录中,它可能应该可以工作。即使它对您来说不完整,它也是一个很好的起点。


推荐阅读