我想知道是否有人知道是否有一种方法来configurationApache,以便http://myurl.com/clips/song1.mp3使得Apache 能够在directory1或directory2中获取song1.mp3 ?
提前致谢!
-Alex
有几种方法可以实现这一点。
一个build议是简单地编写一个名为clips.php
的PHP页面,并在httpd.conf
文件的<Directory>
声明中或在DocumentRoot目录中的.htaccess
文件中具有Options +MultiViews
,其中clips.php
是位于。 我使用这种方法来处理我的GPG密钥策略pipe理器,使用PATH_INFO
来通过同一个PHP文件控制多个特性。 然后你可以让PATH_INFO
parsing被请求的文件名,然后在两个目录中查找文件输出到客户端,在开始stream式传输文件之前,确保为内容设置正确的header()
函数。
我以前使用的另一个选项是确定哪个目录( directory1或directory2 )是主目录 ,并为该目录设置/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的跟踪或处理。