是否可以在Angular v2.x.x中使用URL重写和默认Catch-All路由?

时间:2017-02-09 11:59:59

标签: angular iis angular2-routing url-rewrite-module

我有一个角度应用程序,我目前在IIS上托管,它使用推送状态路由。我已经为IIS配置了url重写模块,其中包含web.config,它将所有请求重定向到索引,以便在服务器上部署时可以正常工作。这是我的web.config:

<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Angular2Html5Routing" 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="/" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

这一切都很好,我可以手动输入网址而不会收到任何404错误。但是,如果输入的路由不是我的任何路由模块配置的一部分,我试图实现捕获所有显示/ login路由的路由。以下是我定义的所有路线:

const appRoutes: Routes = [
    { path: '**', redirectTo: 'login', pathMatch: 'full' }
];

当我在本地提供应用程序时这很好用但是当我将它部署到服务器时,url重写似乎被破坏了 - 所有内容,包括应用程序中的有效路由现在都被定向回登录页面。

之前是否有人遇到此问题并设法同时获取网址重写和默认路由?

干杯

0 个答案:

没有答案