从 angularJS 的 url 中删除 # 用于后端为 Django 的 SEO

Removing # from url of angularJS for SEO with backend as Django

我知道从 AngularJS 中删除散列非常简单,但问题是后端在 Django 中。

因此,除非使用 "F5" 刷新页面,否则该应用程序可以运行。

所以,如果单击按钮,http://127.0.0.1:8000/account 会工作,但刷新页面会给我 Page not found,因为服务器在 urls.py 文件

中搜索它

有人可以建议我解决这个问题吗?

一切正常。当您刷新页面时,首先请求在服务器上得到处理(并转到 django 路由器)。所以服务器应该知道它应该 return 你的 angular 页面用于这个 URL.

让我们假设包含 Angular 应用程序的页面存在于名为 index 的视图中。然后只需将 url 指向它:

urlpatterns = [
    url(r'^account/$', index), 
]

或将所有 url 指向您的视图(如果您不需要任何其他 url 在没有 angular 的情况下进行处理):

//something like this, not really sure about the regex
urlpatterns = [
    url(r'^.*$', index), 
]

或类似

urlpatterns = [
    url(r'^/account/.*$', index), 
]

您不是唯一遇到此问题的人:请参阅 and 。 所以正如您所见,这不是 Django 特有的问题,而是一些通用的客户端-服务器工作流程。

使用 Locationprovider 而不是 routeProvider 并启用 html5 为真。 https://docs.angularjs.org/api/ng/provider/$locationProvider