这将有点长,但我希望能让自己清楚。请问我是否没有充分解释一点。
使用以下结构/设置,我已经完成了除IE9之外的所有浏览器的一切工作。对于以下任何事情,我不需要提供支持;因此问题在于EI9。我没有使用UI路由器。
网站网址http://domainname
内部网页链接1 <a href="page1">page1</a>
- 点击此链接应该让我http://domainname/page1
内部网页链接2 <a href="page2">page2</a>
- 点击此链接应该让我http://domainname/page2
基地<base href="/">
HTML5模式启用$locationProvider.html5Mode(true)
相关路线配置
.when('/',{
templateUrl : 'pages/homepage.html',
controller : 'homepageController'
}).when('/page1',{
templateUrl : 'pages/page1.html',
controller : 'page1Controller'
}).when('page2',{
templateUrl : 'pages/page2.html',
controller : 'page2Controller'
})
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
- 这是为了直接转到页面而不是登陆索引,因此不会给路由机制提供接管的机会我的IE9问题
以上网站网址转化为http://domainname/#/
- /#/
被插入到链接中 - 我希望它已经消失,因为它会导致以下问题:
<a href="page1">page1</a>
时,我收到的链接变为http://domainname/#/page1
- 但加载正常。尝试从page2
page1
页面时,问题就变得明显了
<a href="page2">page2</a>
时,我收到的链接变为
http://domainname/#/page1/page2
,最糟糕的情况是http://domainname/#/page2
- Angular会将URL添加到现有网址,作为一种子路由。所以等等其他页面 - URL连接。我认为这与IE9不支持HTML5推/弹的事实有关,我猜它是Angular使用的。我不确定,我是新来的。至少$locationProvider.html5Mode(true)
是我所知道的IE9的错误。
我目前陷入困境,并会对此事表示感谢。
编辑:以下答案是一个可行的解决方案,我会在进一步调查后接受“解决问题”的答案。如果您遇到同样的问题,请使用它。
答案 0 :(得分:1)
我已经为ie9下的angular 1.3路由问题创建了这个pluncker example。你可以在ie9下运行这个例子,它运行良好。
请注意,plunker示例动态地将<base href = ""/>
设置为document.location
。对于你的连续网址问题,我认为这可能是<base href>
的问题。设置为<base href="/" />
可以解决问题。
我还在github上为这个问题创建了一个repo(事实上,这是一个无限$ digest问题,但路由仍然有效,请参阅#9235)。你可以测试这个sample。在此示例中,我设置了<base href="/app/" />
,因为基本网址为app
。
希望帮助。