【发布时间】:2020-01-05 08:17:26
【问题描述】:
我有一个 Django 应用程序,可以在 localhost 上正常工作。即使是 utf-8 URL 路径。但是当我在生产中使用它时,它会给我一个错误:
2019-09-01 14:32:09.558237 [ERROR] [12257] wsgiAppHandler pApp->start_response() return NULL.
Traceback (most recent call last):
File "/home/medualla/virtualenv/project/3.7/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 139, in call
set_script_prefix(get_script_name(environ))
File "/home/medualla/virtualenv/project/3.7/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 179, in get_script_name
script_url = get_bytes_from_wsgi(environ, 'SCRIPT_URL', '') or get_bytes_from_wsgi(environ, 'REDIRECT_URL', '')
File "/home/medualla/virtualenv/project/3.7/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 204, in get_bytes_from_wsgi
return value.encode('iso-8859-1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 1-6: ordinal not in range(256)
当我尝试像
http://meduallameh.ir/صفحه
这样的网址时会发生此错误
我得到的唯一答案是网络服务器的问题。我将它部署在共享主机上,我问他们,他们告诉我 Web 服务器支持 utf-8。现在我需要一些帮助来解决这个问题。
【问题讨论】:
-
您的服务器配置是什么?你运行的是 apache 还是 nginx? gunicorn 还是 uwsgi?
-
请注意,浏览器将此 URI 发送为
http://meduallameh.ir/%D8%B5%D9%81%D8%AD%D9%87,HTTP 仅支持 ASCII 字符,因此 URL 被编码。您的 Web 服务器(例如 apache)应该只将此编码的 URL 传递给您的 wsgi worker,所以这会是一个问题很奇怪。 -
@dirkgroten 我告诉过网络服务器是 LiteSpeed 并且我不知道配置。我正在使用 CPanel 设置 python 应用程序部分。我向主机提供商发送了一张票,他们说网络服务器很好,很多人对此没有问题。
-
@dirkgroten 是的,我很困惑,为什么会这样。将其更改为 ASCII 但 Django 抛出错误
-
仍然需要知道正在使用什么 wsgi 服务器。 LiteSpeed 只是一个网络服务器。
标签: django django-views django-urls litespeed