使用Apache可以设置一个目录来从另一个目录中提取内容

我在Apache服务器上的2个环境中有一个应用程序。 一个是“dev”,它是生产环境的一个子域。 这是一个内容pipe理的应用程序,用户上传媒体。 我希望能够使用相同的媒体更新某些区域的“开发”网站内容。

有没有办法让我的/dev/uploads目录利用/prod/uploads目录中的媒体(recursion)而不必复制内容? (想要保持磁盘空间不变)。

如果我的开发应用程序调用http://dev.mysite.com/uploads/img.jpg媒体实际上应该从http://mysite.com/uploads.img.jpg拉。 我也在使用.htaccess文件重写,因为这是一个ZF应用程序。

1)将开发DocumentRoot的部分符号链接到要开发链接的生产文档根目录。

ln -s /prod/uploads/img.jpg /dev/uploads/img.jpg

确保httpd.conf的Dev Directory允许通过FollowSymLinksconfiguration选项遵循符号链接。

2)重新编写符合您要求从prod提供的要求的dev的URL。 你的例子的redirect将是这样的;

 RewriteCond %{HTTP_HOST} dev.mysite\.com [NC] RewriteCond %{REQUEST_URI} /uploads/img.jpg RewriteRule http://mysite.com/uploads/img.jpg 

PS这是一个伪代码的例子,而不是你想要实现的东西,除非它只是你关心的一个资产。

3)使用Aliasconfiguration将一个目录映射到另一个。

Alias /dev/uploads /prod/uploads

这将为来自/prod/uploads任何匹配http://dev.mysite/uploads的传入path提供服务。 非常依赖于你特定的httpd.confconfiguration的变幻莫测。

你需要使用mod_rewrite来检查dev中的文件是否存在,如果存在则发送请求 – 如果不存在则发送。 就像是..

 RewriteCond /path/to/dev/docroot/${REQUEST_URI} -f # Exists in dev, leave the request alone RewriteRule ^(.*)$ - # Doesn't exist, send to prod RewriteRule ^(.*)$ /path/to/prod/docroot/$1 

请注意,这需要在dev <VirtualHost>上下文中configuration才能正常工作,因为目标是dev文档根目录之外的文件系统path。