我们有一个在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中粘贴时会使用哈希重写联系人,但其他人不会?