我希望在单个IIS虚拟目录上托管多个独立的angular应用程序
例如:
如果我主机与文件夹然后网址到内页将无法工作举例来说:
f2uvfpb91#
你只需要做下面的事情:在index.file中设置基本href:
的数据
<base href="/app3/">
字符串另一种是设置脚本链接,如下所示:
<script type="text/javascript" src="./runtime.js"></script>
型你只需要添加。所以你的整个代码看起来像:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>AngularApp2</title> <base href="/app3/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="./favicon.ico"> </head> <body> <h2>app3</h2> <app-root></app-root> <script type="text/javascript" src="./runtime.js"></script> <script type="text/javascript" src="./es2015-polyfills.js" nomodule></script> <script type="text/javascript" src="./polyfills.js"></script> <script type="text/javascript" src="./styles.js"></script> <script type="text/javascript" src="./vendor.js"></script> <script type="text/javascript" src="./main.js"></script></body> </html>
型并且当您托管Angular应用程序IIS时,不要忘记将dist文件夹设置为文件夹路径。
的
2o7dmzc52#
让我们考虑Ajay Nikam的假设,他希望在单个IIS站点的虚拟主机下托管多个独立的Angular应用程序。
为每个文件夹 admin、sales 和 inventory 创建一个web.config文件,其中包含以下内容:
<configuration> <system.webServer> <rewrite> <rules> <!-- Redirect HTTP request to HTTPS --> <rule name="HTTP to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{REQUEST_URI}" appendQueryString="false" /> </rule> <!-- Avoid 404 error when refreshing web application --> <rule name="Angular Catch All" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.html" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
字符串对于每个文件夹 admin、sales 和 inventory,调整index.html文件中标签的“href”属性值,如下所示(要自动调整,请参阅下面的提示):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Example Admin</title> <base href="https://example.com/admin/"> </head> <body> ... </body> </html>
型
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Example Sales</title> <base href="https://example.com/sales/"> </head> <body> ... </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Example Inventory</title> <base href="https://example.com/inventory/"> </head> <body> ... </body> </html>
型提示:通过Angular项目(*package.json 中的scripts.build)自动化“base”标签的“href”属性:
{ "name": "admin", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build --base-href=https://example.com/admin/", ... } }
型另外,这里还有一个例子,它是从Angular项目的app-routing.module.ts文件中路由的,与 admin 相关:
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { NotFoundComponent } from './core/components/not-found/component/not-found.component'; import { HomeComponent } from './modules/home/component/home.component'; const routes: Routes = [{ path: 'home', component: HomeComponent }, { path: 'not-found', component: NotFoundComponent }, { path: '**', redirectTo: 'not-found' } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
型最后,将每个 admin、sales 和 inventory 文件夹转换为IIS应用程序。完成以上步骤后,应该有一个IIS站点和三个IIS应用程序,每个IIS应用程序托管一个不同的Angular Web应用程序。每个应用程序将响应URL https://example.com/[admin|sales|inventory]。每个应用程序的路由将正常工作。
2条答案
按热度按时间f2uvfpb91#
你只需要做下面的事情:
在index.file中设置基本href:
的数据
字符串
另一种是设置脚本链接,如下所示:
型
你只需要添加。
所以你的整个代码看起来像:
型
并且当您托管Angular应用程序IIS时,不要忘记将dist文件夹设置为文件夹路径。
的
2o7dmzc52#
让我们考虑Ajay Nikam的假设,他希望在单个IIS站点的虚拟主机下托管多个独立的Angular应用程序。
为每个文件夹 admin、sales 和 inventory 创建一个web.config文件,其中包含以下内容:
字符串
对于每个文件夹 admin、sales 和 inventory,调整index.html文件中标签的“href”属性值,如下所示(要自动调整,请参阅下面的提示):
型
型
型
提示:通过Angular项目(*package.json 中的scripts.build)自动化“base”标签的“href”属性:
型
另外,这里还有一个例子,它是从Angular项目的app-routing.module.ts文件中路由的,与 admin 相关:
型
最后,将每个 admin、sales 和 inventory 文件夹转换为IIS应用程序。
完成以上步骤后,应该有一个IIS站点和三个IIS应用程序,每个IIS应用程序托管一个不同的Angular Web应用程序。每个应用程序将响应URL https://example.com/[admin|sales|inventory]。
每个应用程序的路由将正常工作。