我怎样才能让Apache在两个单独的目录中看到一个共同的url?

我想知道是否有人知道是否有一种方法来configurationApache,以便http://myurl.com/clips/song1.mp3使得Apache 能够directory1directory2中获取song1.mp3

提前致谢!
-Alex

有几种方法可以实现这一点。

一个build议是简单地编写一个名为clips.php的PHP页面,并在httpd.conf文件的<Directory>声明中或在DocumentRoot目录中的.htaccess文件中具有Options +MultiViews ,其中clips.php是位于。 我使用这种方法来处理我的GPG密钥策略pipe理器,使用PATH_INFO来通过同一个PHP文件控制多个特性。 然后你可以让PATH_INFOparsing被请求的文件名,然后在两个目录中查找文件输出到客户端,在开始stream式传输文件之前,确保为内容设置正确的header()函数。

我以前使用的另一个选项是确定哪个目录( directory1directory2 )是主目录 ,并为该目录设置/clips/使用/clips/使用Alias 。 然后设置一个mod_rewrite规则,检查其他目录中的文件是否存在,并让Apache手动closures该副本。 我更多地使用了这种情况,我需要覆盖目录中的现有文件,通常使用Web应用程序中较新的副本覆盖文件。

这两个build议取决于你是否是脚本或你的configuration修改技能更强。 创buildPHP文件可能是更通用的手段来完成这一点,但它是迄今为止不完成相同的任务的唯一手段。

除了创造性地使用mod_rewrite之外,您可能还想使用unionfs来合并多个文件系统级别的目录。 在任何情况下,每当你服务FUSE时,使用“EnableSendfile off”是一个好主意。

有很多方法来处理它。

最简单的方法是将“剪辑”作为CGI或其他脚本,查看发送的PATH_INFO,然后查看所需的目录。

…而不是那么直截了当的…使'剪辑'指向'directory1',然后添加一个404处理程序的目录,将查找目录2,调整响应,如果它find该文件。

使用.htaccess,mod_rewrite和PHP我以前做过这个。

.htaccess看起来像这样,例如:

 RewriteEngine on RewriteRule ^clips\.*$ /path/to/script/script.php?i=$1 

在你的PHP脚本中,你会得到我的variables和条形path信息:

 $file=basename($_GET['i']); 

清理$文件以防止任何人读取系统上的任何文件。 然后使用PHPexpression式来search并查看哪个目录(如果有的话)提供。 你也可以通过这个PHP脚本进行任何types的跟踪或处理。