我有一个Python+Django网站,由uWSGI和NginX控制
在生产环境中,下面的每个地址都指向一篇文章APPEND_SLASH=True
设置使第一个URL(非斜杠)重定向到第二个URL(带有一个斜杠)-这是我理解的部分
是什么使得第三、第四和每个URL都有任意数量的斜杠工作?
1. http://example.com/my-article-slug
2. http://example.com/my-article-slug/
3. http://example.com/my-article-slug//
4. http://example.com/my-article-slug///
5. ...
带有多个斜杠的URL只需正确解析Django视图(ArticleDetail
),并显示文章,而无需重定向(!)
然而,在Django本地开发web服务器上,上述链接中只有前两个有效^若URL有多个斜杠,则返回{
根据我的调查DEBUG
设置与这个问题无关
值得注意的是,当我想从URI解析Django视图时,这种行为是一个问题,因为带有许多尾部斜杠的地址(在生产环境中)工作正常,但它们不能通过django.urls.resolve
正确解析:
>>> from django.urls import resolve
>>> resolve('/my-article-slug/')
ResolverMatch(func=articles.views.ArticleDetail, args=(), kwargs={'slug': 'my-article-slug'}...
>>> resolve('/my-article-slug//')
django.urls.exceptions.Resolver404...
Django URL联合配置:
# urls.py
from django.urls import include, path
urlpatterns = [
path('', include('articles.urls')),
]
# articles/urls.py
from django.urls import path
from articles.views import ArticleDetail
urlpatterns = [
...
path('<slug:slug>/', ArticleDetail.as_view(), name='article-detail'),
...
]
顺便说一下,我注意到这是很常见的行为,即:
https://www.djangoproject.com////////////
https://docs.djangoproject.com/en/3.0////////////
https://www.dropbox.com////////////
https://www.dropbox.com/individual////////////
https://www.quora.com////////////
https://www.quora.com/answer////////////
也许是NginX相关的问题
目前没有回答
相关问题 更多 >
编程相关推荐