我在IIS下托管的.NET核心MVC网站中托管了一个多语言Angular 5应用程序。结构如下:
我们有以下重写配置
<rewrite>
<rules>
<rule name="Refresh page" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add matchType="IsFile" negate="true" />
<add matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" negate="true" pattern="(.+)\.(css|jpg|gif|png|ico|js|json|woff2|map|otf|woff|ttf)$" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/login" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/logout" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/signin" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/signout" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/api/authentication/token" ignoreCase="true" />
</conditions>
<action type="Rewrite" url="?path={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
然后在我们的家庭控制器中:
if (!Request.Path.Value.Contains("/fr/") && primaryLanguage.IndexOf("fr", StringComparison.OrdinalIgnoreCase) >= 0)
{
//HttpContext.Request.PathBase = "/fr";
var uri = UriHelper.BuildAbsolute(Request.Scheme, Request.Host, new PathString("/fr/"), Request.Path, Request.QueryString);
return Redirect(uri);
}
不幸的是,在网站被重定向到site / fr后,url被重写为site /?path = fr,我们进入递归循环。
我们如何拥有支持MVC网站中托管的角度html5路由的多语言网站?