Angular4 +路由器重定向到IIS中的主页

时间:2018-02-08 09:30:50

标签: angular iis url-rewriting router

我几周以来一直在学习Angular 4+。

我创建了一个在开发模式下运行良好的Web应用程序,但是当我第一次尝试在IIS中部署应用程序时,我因为众所周知而陷入困境

  

未找到404页

直接从浏览器的地址栏输入地址时出现

错误。

我将各种线程中描述的解决方案应用为this one.

我的应用程序的基础href是" / ePortal /"我的主要应用程序路由定义如下:

export const appRoutes: Routes = [
   { path: 'login', component: LoginComponent },
   { path: 'logout', component: LogoutComponent },
   { path: '', redirectTo: '/publicarea', pathMatch: 'full' },
   { path: '**', component: PageNotFoundComponent }
];

然后我将子路由定义为:

const publicAreaRoutes: Routes = [{
   path: 'publicarea',
   component: PublicAreaComponent,
   children:[
      { path: 'events', component: EventsComponent},
      { path: 'comunicazioni', component: ComunicazioniComponent},
   ]
}];

问题在于,如果我尝试使用地址栏导航到:

  

http://localhost/ePortal/publicarea/events

我一直在重定向到

  

http://localhost/ePortal/publicarea

正如我之前所说的那样,应用程序在dev中运行得很好,问题可能是由于我用来修复上面的404 Page not found错误的IIS规则重写和路径重定向到publicare的路径是''

{ path: '', redirectTo: '/publicarea', pathMatch: 'full' },

这是我使用的web.config文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
      <rewrite>
         <rules>
           <rule name="angularjs routes" stopProcessing="true">
              <match url=".*" />
              <conditions logicalGrouping="MatchAll">
                 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                 <add input="{REQUEST_URI}" pattern="^/$" negate="true"/>
              </conditions>
              <action type="Rewrite" url="/ePortal" />
           </rule>
        </rules>
     </rewrite>
  </system.webServer>
</configuration>

有关如何解决此问题的任何建议?我错过了什么吗? 非常感谢

2 个答案:

答案 0 :(得分:2)

可能你需要做的就是改变

NSString *text = [NSString stringWithFormat:@"%.2f %%",[[[myArray objectAtIndex:i] objectForKey:@"Count"] floatValue]];
[text drawInRect: rect withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[UIColor redColor]} ];

<action type="Rewrite" url="/ePortal" />

当你重定向到root它将删除url的结尾时,你需要直接引入indexfile。

以下是有关此问题的详细信息: https://gingter.org/2017/03/20/deep-link-angular-spa-iis/

答案 1 :(得分:0)

在部署到IIS时,您应该使用HashLocationStrategy。

https://angular.io/api/common/HashLocationStrategy

如果您不想要,请查看this个问题。