从 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
我知道从 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),
]
您不是唯一遇到此问题的人:请参阅
使用 Locationprovider 而不是 routeProvider 并启用 html5 为真。 https://docs.angularjs.org/api/ng/provider/$locationProvider