我正在运行一个带有角度的多项目应用程序 刷新页面时我得到一个
The requested URL was not found on this server.
错误。 我尝试了很多
.htaccess
配置,但在 sourceMap
中将 true
设置为 angular.json
时,它们都不起作用。
服务器是 apache,我当前的 .htaccess
文件是
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
我收到
AH00687
错误代码
这是我的 angular.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"synestez.io": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"preserveSymlinks": true,
"outputPath": "dist/synestez.io",
"index": "src/index.html",
"browser": "src/main.ts",
"polyfills": [
"src/polyfills.ts",
"zone.js"
],
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
"src/assets",
{
"glob":"**/*",
"input":"projects/sequencer/src/assets/",
"output":"/assets/"
},{
"glob":"**/*",
"input":"projects/store/src/assets/",
"output":"/assets/"
},{
"glob":"**/*",
"input":"projects/dj-mixer/src/assets/",
"output":"/assets/"
},{
"glob":"**/*",
"input":"projects/worklet-generator/src/assets/",
"output":"/assets/"
}
],
"styles": [
"projects/sequencer/src/styles.scss",
"projects/dj-mixer/src/styles.scss",
"projects/worklet-generator/src/styles.scss",
"src/styles.scss"
],
"stylePreprocessorOptions": {
"includePaths": [
"projects/sequencer/src/assets/styles/",
"projects/dj-mixer/src/assets/styles/",
"projects/worklet-generator/src/assets/styles/"
]
},
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all",
"fileReplacements":[ {
"replace":"src/environments/environments.ts",
"with":"src/environments/environment.production.ts"
} ]
},
"staging": {
"optimization": true,
"extractLicenses": false,
"sourceMap": true,
"fileReplacements":[
{
"replace": "src/environments/environments.ts",
"with": "src/environments/environment.staging.ts"
},
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.staging.ts"
}
]
}
},
"defaultConfiguration": "staging"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "synestez.io:build:production"
},
"staging": {
"buildTarget": "synestez.io:build:staging"
}
},
"defaultConfiguration": "development",
"styles": [
"projects/sequencer/src/styles.scss",
"src/styles.scss"
],
"stylePreprocessorOptions": {
"includePaths": [
"projects/sequencer/src/assets/styles/",
"projects/dj-mixer/src/assets/styles/",
"projects/worklet-generator/src/assets/styles/"
]
},"assets": [
"src/favicon.ico",
"src/assets",
{
"glob":"**/*",
"input":"projects/sequencer/src/assets/",
"output":"/assets/"
},{
"glob":"**/*",
"input":"projects/store/src/assets/",
"output":"/assets/"
},{
"glob":"**/*",
"input":"projects/dj-mixer/src/assets/",
"output":"/assets/"
},{
"glob":"**/*",
"input":"projects/worklet-generator/src/assets/",
"output":"/assets/"
}
]
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "synestez.io:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:jest",
"options": {
"polyfills": [
"src/polyfills.ts",
"zone.js",
"zone.js/testing"
],
"tsConfig": "tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"scripts": []
}
}
}
},
"store": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "projects/store",
"sourceRoot": "projects/store/src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"preserveSymlinks": true,
"outputPath": "dist/store",
"index": "projects/store/src/index.html",
"browser": "projects/store/src/main.ts",
"polyfills": [
"src/polyfills.ts",
"zone.js"
],
"tsConfig": "projects/store/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/store/src/favicon.ico",
"projects/store/src/assets"
],
"styles": [
"projects/store/src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "store:build:production"
},
"development": {
"buildTarget": "store:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "store:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"src/polyfills.ts",
"zone.js",
"zone.js/testing"
],
"tsConfig": "projects/store/tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/store/src/favicon.ico",
"projects/store/src/assets"
],
"styles": [
"projects/store/src/styles.scss"
],
"scripts": []
}
}
}
},
"sequencer": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "projects/sequencer",
"sourceRoot": "projects/sequencer/src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"preserveSymlinks": true,
"outputPath": "dist/sequencer",
"index": "projects/sequencer/src/index.html",
"browser": "projects/sequencer/src/main.ts",
"polyfills": [
"src/polyfills.ts",
"zone.js"
],
"tsConfig": "projects/sequencer/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/sequencer/src/favicon.ico",
"projects/sequencer/src/assets"
],
"styles": [
"projects/sequencer/src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "sequencer:build:production"
},
"development": {
"buildTarget": "sequencer:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "sequencer:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:jest",
"options": {
"polyfills": [
"src/polyfills.ts",
"zone.js",
"zone.js/testing"
],
"tsConfig": "projects/sequencer/tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/sequencer/src/favicon.ico",
"projects/sequencer/src/assets"
],
"styles": [
"projects/sequencer/src/styles.scss"
],
"scripts": []
}
}
}
},
"dj-mixer": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "projects/dj-mixer",
"sourceRoot": "projects/dj-mixer/src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"preserveSymlinks": true,
"outputPath": "dist/dj-mixer",
"index": "projects/dj-mixer/src/index.html",
"browser": "projects/dj-mixer/src/main.ts",
"polyfills": [
"src/polyfills.ts",
"zone.js"
],
"tsConfig": "projects/dj-mixer/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/dj-mixer/src/favicon.ico",
"projects/dj-mixer/src/assets"
],
"styles": [
"projects/dj-mixer/src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "dj-mixer:build:production"
},
"development": {
"buildTarget": "dj-mixer:build:development"
}
},
"defaultConfiguration": "development",
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "dj-mixer:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"src/polyfills.ts",
"zone.js",
"zone.js/testing"
],
"tsConfig": "projects/dj-mixer/tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/dj-mixer/src/favicon.ico",
"projects/dj-mixer/src/assets"
],
"styles": [
"projects/dj-mixer/src/styles.scss"
],
"scripts": []
}
}
}
},
"worklet-generator": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "projects/worklet-generator",
"sourceRoot": "projects/worklet-generator/src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"preserveSymlinks": true,
"outputPath": "dist/worklet-generator",
"index": "projects/worklet-generator/src/index.html",
"browser": "projects/worklet-generator/src/main.ts",
"polyfills": [
"src/polyfills.ts",
"zone.js"
],
"tsConfig": "projects/worklet-generator/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/worklet-generator/src/favicon.ico",
"projects/worklet-generator/src/assets"
],
"styles": [
"projects/worklet-generator/src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "worklet-generator:build:production"
},
"development": {
"buildTarget": "worklet-generator:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "worklet-generator:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"src/polyfills.ts",
"zone.js",
"zone.js/testing"
],
"tsConfig": "projects/worklet-generator/tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/worklet-generator/src/favicon.ico",
"projects/worklet-generator/src/assets"
],
"styles": [
"projects/worklet-generator/src/styles.scss"
],
"scripts": []
}
}
}
}
}
}
这是我的路线
import { Routes } from '@angular/router';
import { ContactComponent } from '../../projects/store/src/app/contact/contact.component';
import { HomeComponent } from '../../projects/store/src/app/home/home.component';
import { WorkletGeneratorOrderComponent } from '../../projects/store/src/app/worklet-generator-order/worklet-generator-order.component';
import { WorkletGeneratorComponent } from '../../projects/store/src/app/worklet-generator/worklet-generator.component';
import { AppComponent as WorkletGeneratorAppComponent } from './../../projects/worklet-generator/src/app/app.component';
import { ContainerComponent } from './container/container.component';
export const routes: Routes = [{
path:'',
component:ContainerComponent,
children:[{
path:'',
component:HomeComponent
},{
path:'worklet-generator/live',
component:WorkletGeneratorAppComponent
},{
path:'worklet-generator/order',
component:WorkletGeneratorOrderComponent
},{
path:'worklet-generator',
component:WorkletGeneratorComponent
},{
path:'contact',
component:ContactComponent
}]
}];
您可以尝试在 .htacess 配置中包含以下内容,以便直接提供源映射。
RewriteCond %{REQUEST_URI} !\.map$ [NC]