使用IE9在html5模式下共享Angular.js链接

时间:2015-05-14 18:21:22

标签: angularjs single-page-application html5-history

我们有一个在HTML 5模式下运行的angular.js应用程序,IE9在浏览应用程序时按预期回退到hashbang模式。但是,如果我们共享/发布我们网站上的网页链接,我们需要这些链接在IE9中输入或粘贴到浏览器中时才有效。目前,这仅适用于某些页面。

我们的“联系我们”页面有效。如果您在IE9中输入/base/contact,则网址会自动更改为/base/#/contact并完美显示。有趣的是,当输入的链接为/base/contact/时,它不起作用。

大多数网页都不起作用。例如,/base/dataset/data-registry应该在IE9中更改为/base/#/dataset/data-registry,但事实并非如此。网址无法更改,页面无效。

以下是相关路线:

$routeProvider
       .when('/dataset/:id', {
            templateUrl: 'components/dataset/dataset.html',
            controller: 'datasetCtrl'
        })
        .when('/', {
            templateUrl: 'components/home/home.html',
            controller: 'homeCtrl'
        })
        .when('/contact', {
            templateUrl: 'components/contact/contact.html',
            controller: 'contactCtrl'
        })
        .when('/article/:articleId', {
            templateUrl: 'components/article/article.html',
            controller: 'articleCtrl'
        })
        .otherwise({
            redirectTo: '/'
        })

如果这是服务器问题,这是我的IIS规则:

<rewrite>
  <rules>
    <rule name="dataset" stopProcessing="true">
      <match url="^fir/dataset/*" />
      <action type="Rewrite" url="fir/index.html" />
    </rule>
    <rule name="contact" stopProcessing="true">
      <match url="^fir/contact/*" />
      <action type="Rewrite" url="fir/index.html" />
    </rule>
    <rule name="article" stopProcessing="true">
      <match url="^fir/article/*" />
      <action type="Rewrite" url="fir/index.html" />
    </rule>
    <rule name="fir" stopProcessing="true">
      <match url="^$" />
      <action type="Redirect" url="fir/" />
    </rule>
  </rules>
</rewrite>

任何人都可以解释为什么在IE9中粘贴时会使用哈希重写联系人,但其他人不会?

0 个答案:

没有答案