我即将推出一个新的Django网站(RedHat EL4,Apache 2.0.52,Django 1.1,mod_wsgi),从基本的静态HTML和PHP网站转换。 正如目前configuration的那样,Django处理新站点上的每个请求,从站点根(即,由Django处理mydomain.com/)开始。
旧网站在mydomain.com/forum/上build立了一个PhpBB论坛。 我试图弄清楚如何(或者如果)我可以让论坛系统在新网站的同一个地方居住。 所以,mydomain.com/forums/下的任何东西都是由PhpBB处理的,其他的一切都是由Django处理的。
我觉得Apache的“位置”指令是使用的工具,但我没有从Apache文档和Google获得足够的具体build议。 我对Apache的configuration文件非常熟悉,但是我之前不需要做这种types的configuration。 感谢您的任何build议。
我有我的主机通过以下在我的Apacheconfiguration提供的静态文件:
Alias /media /sites/mysite.org/www/media <Location /media> Order allow,deny Allow from all </Location>
这样,Apache就会在别名到达Django之前处理别名。 我假设你只需要启用PHP的function,以对该目录工作。
更新根据格雷厄姆的评论如下。 查看http://httpd.apache.org/docs/current/sections.html#page-header中的“什么时候使用”部分
在文件系统容器和webspace容器之间进行select其实很简单。 将指令应用于驻留在文件系统中的对象时,请始终使用或。 将指令应用于不驻留在文件系统中的对象(如从数据库生成的网页)时,请使用。
当试图限制访问文件系统中的对象时,永远不要使用它。 这是因为许多不同的web空间位置(URL)可以映射到相同的文件系统位置,从而可以规避您的限制。 例如,请考虑以下configuration:
<Location /dir/> Order allow,deny Deny from all </Location>
如果请求是http://yoursite.example.com/dir/,这工作正常。 但是如果你在不区分大小写的文件系统呢? 然后,您可以通过请求http://yoursite.example.com/DIR/轻松规避您的限制。 相反,该指令将适用于从该位置提供的任何内容,而不pipe它是如何被调用的。 (文件系统链接是一个例外,同一个目录可以使用符号链接放置在文件系统的多个部分中,该指令将遵循符号链接而不重置path名,因此,为了最高级别的安全性,符号链接应该是禁用了适当的选项指令。)
如果您也许认为这些都不适用于您,因为您使用的是区分大小写的文件系统,请记住还有许多其他方法可将多个Web空间位置映射到相同的文件系统位置。 因此,您应该始终使用文件系统容器。 但是,这个规则有一个例外。 将configuration限制放在一个部分是非常安全的,因为这部分将适用于所有请求,而不pipe具体的URL。