如何将 PHP 论坛系统与新 Django 网站集成

如何将 PHP 论坛系统与新 Django 网站集成

我即将推出一个新的 Django 网站 (RedHat EL4、Apache 2.0.52、Django 1.1、mod_wsgi),从基本的静态 html 和 php 网站过渡。根据目前的配置,Django 会处理新网站上的每个请求,从网站根目录开始 (即 mydomain.com/ 由 Django 处理)。

旧网站在 mydomain.com/forum/ 上设置了一个 PhpBB 论坛。我正在尝试弄清楚如何(或是否)让论坛系统位于新网站上的同一位置。因此,mydomain.com/forums/ 下的任何内容都由 PhpBB 处理,其他所有内容都由 Django 处理。

我觉得 Apache 的“Location”指令是可以使用的工具,但我没有从 Apache 文档和 Google 获得足够具体的建议。我对 Apache conf 文件相当熟悉,但我以前从未做过这种事情。感谢您的任何建议。

答案1

我通过我的 apache 配置中的以下内容从我的主机提供静态文件:

  Alias /media /sites/mysite.org/www/media
  <Location /media>
    Order allow,deny
    Allow from all
  </Location>

这样,Apache 就会在到达 Django 之前处理别名。我假设您只需要启用 php 即可在该目录中工作。

更新按照 Graham 下面的注释。请参阅http://httpd.apache.org/docs/current/sections.html#page-header

何时使用

在文件系统容器和网络空间容器之间进行选择其实相当容易。当将指令应用于驻留在文件系统中的对象时,请始终使用 或 。当将指令应用于不驻留在文件系统中的对象(例如从数据库生成的网页)时,请使用 。

尝试限制对文件系统中对象的访问时,切勿使用此选项。这是因为许多不同的网络空间位置 (URL) 可能映射到同一文件系统位置,从而允许规避您的限制。例如,请考虑以下配置:

<Location /dir/>
Order allow,deny
Deny from all
</Location>

如果请求的是http://yoursite.example.com/dir/。但是如果你的文件系统不区分大小写怎么办?那么你的限制很容易被绕过,只需请求http://yoursite.example.com/DIR/。相反,该指令将适用于从该位置提供的任何内容,无论如何调用它。(文件系统链接是个例外。使用符号链接,同一个目录可以放在文件系统的多个部分。该指令将跟随符号链接而不重置路径名。因此,为了获得最高级别的安全性,应使用适当的选项指令禁用符号链接。)

如果您可能认为由于您使用区分大小写的文件系统,因此上述内容都不适用于您,请记住,还有许多其他方法可以将多个 Web 空间位置映射到同一文件系统位置。因此,您应该尽可能使用文件系统容器。但是,此规则有一个例外。将配置限制放在一个部分中是绝对安全的,因为此部分将应用于所有请求,无论具体 URL 如何。

相关内容