当我查询此网址时
http://mywebsite.com/foos/
Django给我:
Page not found (404)
Request Method: GET
Request URL: http://mywebsite.com/foos//
The current URL, , didn't match any of these.
错误:
-在“请求网址”的末尾加“ /”,
-当前网址为空。
我的规格:
我用nginx作为fast_cgi的反向代理来运行django网站。
在这里我的网站conf为nginx:
server {
listen 80;
server_name mywebsite.com;
location / {
fastcgi_pass unix:/tmp/_var_wwwdjango_mywebsite.socket;
include /etc/nginx/fastcgi_params;
}
}
这是我的fastcgi_params文件:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
#fastcgi_param HTTPS $server_https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
备注:
如果我在模式中添加
url(r'^$', 'myapp.views.index')
,它将为我的所有请求呈现视图...因此,这显然是nginx conf或fast_cgi问题。当我使用django开发服务器执行网站时,我的网址就可以了。
最佳答案
您缺少PATH_INFO参数。
fastcgi_param PATH_INFO $fastcgi_script_name;
请参阅nginx文档:http://wiki.nginx.org/DjangoFastCGI
如果您在自己喜欢的搜索引擎中尝试使用“ nginx PATH_INFO django”,则看起来某些用户也必须删除SCRIPT_NAME参数才能使其正常工作。
关于django - 使用Nginx和fastcgi部署的Django的空“当前URL”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9298335/