Django的WSGI应用程序在一个子目录中?

最近,我想把我的一个WSGI应用程序放到一个子目录中,这样其他包含各种脚本的目录就像以前一样工作。 为了做到这一点,我在全局命名空间的httpd.conf中添加了下面的指令(也试图把它放在VirtualHost ,它给出了相同的效果):

 WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi 

然后,我跑了django-admin startproject hello 。 重新加载Apacheconfiguration后,我可以确认http://localhost/hello/指向一个Django的“欢迎”屏幕。 然后,我编辑了hello/urls.pyurlpatterns元组中添加下面一行:

 url(r'^hello/', 'hello.views.home'), 

接下来,我创build了具有以下内容的hello / views.py:

 from django.http import HttpResponse def hello(request): return HttpResponse("Hello world") 

不幸的是,当我尝试访问http://localhost/hello/hello ,我得到一个标准的Apache 404消息,并在错误日志中input以下内容:

 [Mon Dec 23 19:49:44 2013] [error] [client 31.182.131.38] Target WSGI script not found or unable to stat: /var/www/hello/hello.wsgihello 

注意hello.wsgihello 。 第二个hello是URL中/hello/之后出现的文本。 对于http://localhost/hello/unknown ,这将是hello.wsgiunknown 。 这里是我的hello.wsgi

 import os import sys os.environ['DJANGO_SETTINGS_MODULE'] = 'hello.settings' path = '/var/www/hello' if path not in sys.path: sys.path.append(path) import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() 

我做错什么了吗? 我如何解决它?

/var/www/hello/hello.wsgi的文件语法困惑了我。 显然,如果指向/var/www/hello/hello.wsgi/ ,configuration工作正常。