如何在多语言设置中使用angular设置.net核心重写

时间:2018-03-15 11:11:31

标签: asp.net-mvc angular url-rewriting .net-core

我在IIS下托管的.NET核心MVC网站中托管了一个多语言Angular 5应用程序。结构如下:

  • 网站/(英文网站)
  • site / fr(法国网站)

我们有以下重写配置

  <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路由的多语言网站?

0 个答案:

没有答案