代码之家  ›  专栏  ›  技术社区  ›  yarz-tech

Angular 5 URL重写问题

  •  2
  • yarz-tech  · 技术社区  · 7 年前

    我构建了一个有两条路线的Angular 5应用程序。我目前有: 主页/每日摘要和主页/文档。当我将应用程序发布到服务器(IIS 6.0 w/URL重写)并导航到主页时。aspx页面一切都运行得很好,如果我单击这些链接,我的路由将引导我访问每日摘要和文档。我遇到的问题是刷新或导航到页面而不返回主页。aspx,它会将我指向根文件夹。我确信这与我的URL重写规则有关:

    <rule name="RewriteRules" 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="Redirect" url="/NewWebApp/" />
    </rule>
    

    我的家。aspx页面具有相同的href值(“/NewWebApp/”)

    我不知道怎么回家。然后,aspx导航到特定路线。

    我的网站。配置和主页。aspx位于我的项目的根目录中。

    这是我的路线,如果有帮助的话。

    const appRoutes: Routes = [
    { path: 'Home.aspx', redirectTo: 'Home/DailySummary', pathMatch: 'full' },
    { path: '', redirectTo:'Home/DailySummary', pathMatch:'full' },
    {
        path: 'Home', component: INHome, children: [
            { path: 'DailySummary', component: DailySummary },
            { path: 'Documents', component: Documents },
            { path: 'Safety',component: Safety},
            { path:'', redirectTo:'DailySummary', pathMatch:'full'}
        ]
    },
    {path:'**',redirectTo:'Home/DailySummary', pathMatch:'full'}
    ]
    

    谢谢你的帮助。如果你需要更多信息,请告诉我。

    1 回复  |  直到 7 年前
        1
  •  2
  •   GreyBeardedGeek    7 年前

    这是Angular的PathLocationStrategy工作方式的一个问题。 它生成了漂亮的URL,但它展示了您正在经历的行为——除非您进行大量的黑客攻击,否则用户必须加载应用程序的索引页来引导应用程序,因此,将书签添加到其他位置(以及重新加载)是不起作用的。

    我发现解决这个问题的最简单方法是完全避免这个问题,并使用文档中所称的“老派”方法——将路由器切换到HashLocationStrategy。您最终会遇到如下URL http://mydomain/index.html#somelocation 而不是 http://mydomain/somelocation ,但用户真的在乎吗?

    结果就是“丑陋”的URL只能正常工作——书签和重新加载都可以正常工作,因为您总是在加载索引。html

    看见 https://angular.io/guide/router#browser-url-styles 了解更多信息。