2016-02-26 68 views
0

假设我们有一个建立在AngularJS上的网站。我们通过将HTML5mode设置为true来弄清楚如何从url中隐藏不漂亮的/#!/个字符。但是,我们有一个问题,当游客来到旧网址的链接,包括/#!/www.example.com/#!/products/的网站重定向他主页www.example.com这当然我们不意味着我们预计他重定向到www.example.com/products/因此我们尝试写一个说,很多重写规则,如果你通过与/#!/旧链接去网站比它应该重定向到新链接没有/#!/。但是这对我们不起作用,我们确信重写规则是可以的。AngularJS隐藏#!重写

AngularJS的设置会出现一些问题吗? 感谢您的时间和建议!

+0

哪些服务器端语言是您使用 – oseintow

+0

@oseintow谢谢。这些数据首先只能用于客户端代码。 – Quentin

+0

在你的情况下它是无关紧要的,因为你已经将客户端与服务器分离了。我同意 – oseintow

回答

2

片段标识符永远不会被发送到服务器,这样你就可以与他们正在使用服务器端代码(包括重写)没有处理。你必须用客户端代码来处理它们。

0

我解决了这个问题,但我可不是100%肯定它是如何工作的,我想知道这一点。我需要做的只是在html5Mode的设置后添加hashPrefix('!')

$locationProvider.html5Mode(true).hashPrefix('!'); 

现在它按照我们想要的方式工作,但实际上hashPrefix('!')究竟做了什么?我刚刚从文档中发现它“配置现有提供商”但为什么隐藏#!没有这个工作?

请你能解释一下我本人对这个话题的最后两个问题。这应该是无关的 -