在Apache中部署工作的Django应用程序的URLredirect问题(通过mod_wsgi)

我有一个Django的应用程序,完全在Django的开发服务器下工作。 我试图使用mod_wsgi在apache2.2中部署它,我有错误。 在httpd.conf文件中,我使用下面的命令在根/ myapp下“挂载”我的应用程序:

<IfModule wsgi_module> WSGIScriptAlias /myapp my_path_to_wsgi_module/django.wsgi WSGIScriptReloading On WSGIDaemonProcess djangoapps processes=10 threads=1 maximum-requests=500 display-name=my-wsgi WSGIProcessGroup djangoapps </IfModule> 

我已经按照标准指示准备django.wsgi。 现在,我可以到达我的应用程序的主页面模板,但似乎有redirect错误。 “/ myapp”根不会自动插入ULRredirect请求。 通过urls.py从主页面模板请求views.py中的某些模块无法正确传递。

apache访问日志:

 127.0.0.1 - - [21/Feb/2011:16:11:44 +0100] "GET /myapp/ HTTP/1.1" 200 1795 127.0.0.1 - - [21/Feb/2011:16:11:46 +0100] "GET /api/dir HTTP/1.1" 404 205 

“/ api / dir”不存在,它应该从urls.py中的模式匹配,但是id不。

apache错误日志:

 [Tue Feb 21 16:11:46 2011] [error] [client 127.0.0.1] File does not exist: /home/my_path_to_django_app_superfolder/api, referer: http://127.0.0.1/myapp/ 

我花了两天多的时间,请有人帮忙吗?

最后我发现错误。 它没有连接到httpd.conf文件,而是连接到django urls.py文件和模板的URL。
当我以这种方式安装myapp时:

 WSGIScriptAlias /myapp my_path_to_wsgi_module/django.wsgi 

我相信在django模板文件中指定的URL应该带有一个初始斜线,如下所示: '/api/dir'
结果是,这样应用程序只能在django开发服务器上运行,而不能在apache上运行。

相反,如果您使用的url没有像以下这样的初始斜杠:
'api/dir'
该应用程序在django开发服务器和Apache上正常工作!

即使在django urls.py文件的模式匹配上也要避免使用起始斜杠:
像这样: (r'^api/dir$', 'available_services')
而不是这样: (r'^/api/dir$', 'available_services')

也许这对专家级用户来说是显而易见的,但是如果你是像我这样的新手,这可能会让你失去一定的时间,因为这是一个很难被发现的问题。