Angular:如何为每个配置添加唯一的.htaccess文件?

时间:2018-06-19 13:41:00

标签: angular .htaccess build angular-cli .htpasswd

我的Angular应用程序包含2个构建配置:过渡和生产。


目前,对于我的所有构建,我都有一个标准的.htaccess文件,方法是将其包含在我的资产中:

"assets": [
  "src/.htaccess",
  "src/assets",
  "src/favicon.png"
],

我想用.htpasswd文件用密码保护我的登台构建目录,所以我更新了资产以包含它:

"assets": [
  "src/.htaccess",
  "src/.htpasswd"
  "src/assets",
  "src/favicon.png"
],

htpasswd文件可以包含在每个版本中,因为.htaccess文件中没有提及,它什么也不做。


然后,我创建了第二个.htaccess文件,名为.htaccess.dev,并添加了以下几行:

AuthName "Protected"
AuthUserFile /home/admin/domains/dev.***.com/public_html/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
require valid-user

此带有多余行的文件应替换登台版本中的.htaccess文件,因此我在angular.json文件中添加了以下配置:

"build": {
  ...
  "configurations": {
    "staging": {
      ...
      "fileReplacements": [
        {
          "replace": "src/.htaccess",
          "with": "src/.htaccess.dev"
        },
        {
          "replace": "src/environments/environment.ts",
          "with": "src/environments/environment.staging.ts"
        }
      ]
    }
  }
}

fileReplacements在我的.env上可以正常使用,但是它不能代替我的htaccess文件。为什么?

1 个答案:

答案 0 :(得分:0)

嗯,看来fileReplacements仅适用于.ts个文件。


angular/devkit#885

  

当前,文件替换功能仅适用于TS文件。更具体地说-它仅适用于webpack编译器主机中的文件。

(显然)这将在Angular 6.1中修复。

See this GitHub thread for more info


更新2018-08-28

现在(confirmed)在Angular 6.1中受支持