我刚从我的角度单页应用的网址中删除了#tag。
我确实喜欢。
$locationProvider.html5Mode(true);
它运作良好。
我的问题是当我直接在浏览器中输入任何URL时显示404错误。当我通过链接遍历应用程序时,它的工作正常。
Eg: www.example.com/search
www.example.com/search_result
www.example.com/project_detail?pid=19
所有这些网址都运行良好。但是当我直接在我的浏览器中输入上述任何一个url时,它会显示404错误。
请关注它。 提前致谢。
答案 0 :(得分:0)
我有类似的问题。在我的案例中,服务器端实现包括Spring。
客户端路由确保在客户端解析所有网址更改。但是,当您在浏览器中直接输入任何此类网址时,浏览器实际上会转到服务器以检索与该网址对应的网页。
现在在你的情况下,由于这些是虚拟网址,这在客户端是有意义的,服务器会抛出404.
您可以在服务器端捕获页面未找到的异常 实现,并重定向到您应用中的默认页面[route]。
在Spring中,我们确实有找不到页面异常的处理程序,所以我 猜测它们也可用于你的服务器端实现。
答案 1 :(得分:0)
使用历史记录API时,您会说:
"这是一个新网址。我刚刚运行的其他JavaScript已经将页面转换为访问该URL所能获得的页面。"
这要求您编写服务器端代码,以便为其他网址构建该状态的网页。这不是一件容易的事情。通常需要大量的工作。
但是,为了换取这项工作,您将获得健壮性和效果。当访问其中一个URL时,它将:
答案 2 :(得分:-1)
您需要使用重写规则。 Angular是一个单页面应用程序,因此您的所有请求都应该转到同一个文件(index.html)。您可以通过创建.htaccess
来完成此操作。
假设您的主页是index.html。
像这样(未经测试):
RewriteRule ^(.)*$ / [L,QSA]
L标志表示如果规则匹配,则不要执行下一个RewriteRule。
QSA表示URL查询参数也与重写的URL一起传递。
有关htaccess的更多信息:http://httpd.apache.org/docs/2.2/howto/htaccess.html