Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试将Django应用程序子目录设置为子域_Django_Apache_.htaccess_Mod Wsgi - Fatal编程技术网

正在尝试将Django应用程序子目录设置为子域

正在尝试将Django应用程序子目录设置为子域,django,apache,.htaccess,mod-wsgi,Django,Apache,.htaccess,Mod Wsgi,我用Apache和mod_wsgi安装了一个Django应用程序,它运行良好。我在同一个应用程序下有一个百日咳博客,在/blog/子目录下运行。所以,这个博客是www.mysite.com/blog/。我想做的是让blog.mysite.com/指向/blog/子目录。我被难住了,因为我不知道我是应该通过Django还是Apache来实现这一点。那么,有什么想法吗?这必须通过Apache配置完成 我认为您必须设置一个反向代理,它将侦听blog.mysite.com域和www.mysite.com

我用Apache和mod_wsgi安装了一个Django应用程序,它运行良好。我在同一个应用程序下有一个百日咳博客,在/blog/子目录下运行。所以,这个博客是www.mysite.com/blog/。我想做的是让blog.mysite.com/指向/blog/子目录。我被难住了,因为我不知道我是应该通过Django还是Apache来实现这一点。那么,有什么想法吗?

这必须通过Apache配置完成

我认为您必须设置一个反向代理,它将侦听blog.mysite.com域和www.mysite.com/blog/的代理请求


不幸的是,我不是Apache pro,因此无法帮助您进行配置。

完全从内存开始,现在无法测试,但在VirtualHost for blog.mysite.com中,将其装载为:

WSGIScriptAlias / /some/path/wsgi.py/blog
换句话说,您仍然使用mod_wsgi挂载它,但是将“/blog”添加到目标wsgi脚本路径的末尾。这将从内存中导致Apache和mod_wsgi重新映射内容,以便自动将“/blog”添加为Django应用程序看到的URL的一部分。因此,它应该映射到Django URL.py中URL命名空间中映射到该位置的博客


请注意,由于您使用的是不同的WSGIScriptAlias,因此它实际上会在内存中的不同子解释器中加载Django站点的第二个副本,而不是第一个。如果这是不需要的,您可以使用WSGIApplicationGroup指令覆盖它们都运行在哪个应用程序组中,并将它们设置为相同。如果您还没有使用mod_wsgi守护进程模式,最好使用mod_wsgi守护进程模式,并让它们与Apache子工作进程不同地运行,因为这通常比使用嵌入式模式要好。

您应该首先配置web服务器(接收DNS名称并进行别名)。如果您使用Nginx,请对其进行配置。如果没有,您可以配置Apache。当然,还要确保blog.mysite.com匹配相同的IP地址。不幸的是,这似乎不起作用。我遇到了一个错误:
内部服务器错误:/blog/favicon.ico
不知道我是否也应该更改URL中的任何内容……对/favicon.ico的请求总是会失败,因为您的Django应用程序可能无法理解这样的请求。您应该使用别名指令来映射此类特殊URL。换句话说,这是一个无关的问题。因此,您是否有任何其他详细信息说明它失败的原因,因为这不是原因。