Javascript 非单页应用程序:单击时使用pushState更改地址栏中的URL

Javascript 非单页应用程序:单击时使用pushState更改地址栏中的URL,javascript,html,angularjs,angularjs-directive,angularjs-routing,Javascript,Html,Angularjs,Angularjs Directive,Angularjs Routing,所以我的应用程序不是SPA。我在某些地方使用Angular,有时在整个页面上使用Angular,但我在地址栏中看到的是我的服务器页面(PHP) 现在,有一个页面,我希望将我的类别显示为可单击的链接/按钮,并显示已单击类别的列表 虽然这并不太难实现,但我担心SEO方面的问题。 我遇到了一个pushState东西,它“似乎”应该在点击按钮时改变url。 你可以在这里看到它的作用 在单击任何按钮之前,您可以通过播放右侧的Youtube视频来验证页面是否未更改 现在,我想知道我是否有机会在我的ng cl

所以我的应用程序不是SPA。我在某些地方使用Angular,有时在整个页面上使用Angular,但我在地址栏中看到的是我的服务器页面(PHP)

现在,有一个页面,我希望将我的类别显示为可单击的链接/按钮,并显示已单击类别的列表

虽然这并不太难实现,但我担心SEO方面的问题。 我遇到了一个
pushState
东西,它“似乎”应该在点击按钮时改变url。 你可以在这里看到它的作用

在单击任何按钮之前,您可以通过播放右侧的Youtube视频来验证页面是否未更改


现在,我想知道我是否有机会在我的
ng click
方法中利用这一点。缩进的行为是将URL放在地址栏中以保持我的服务器页面,然后在其后面添加我的类别seo名称。

ng click
是一个在链接上附加
on('click')
事件处理程序的指令。你需要将
href
设置为谷歌机器人可以阅读的内容:@SergiuParaschiv我刚刚尝试将
ng href
添加到一个链接,看看它是否能带我去任何地方。没有。实际上什么也没发生。恐怕我没有完全理解你的意思。关键是任何AngularJS指令都会通过JavaScript修改DOM。Googlebot会理解一些JavaScript,但是AngularJS指令做的太复杂了,基本上被忽略了。另一方面,如果您的超链接(
a
标记)具有指向异步加载的实际HTML片段的正确
href
属性(未通过JS DOM操作添加),则Googlebot确实理解基本的
pushState
操作。所以
ng href
ui-sref
ng-click
或任何其他AngularJS指令都不起作用。@SergiuParaschiv那么你是说,除了使用
pushState
更改我的URL外,我还需要设置正确的
href
(而不是
ng href
)以便谷歌理解它?是的。我链接到的第一个问题已经解释过了。