【发布时间】:2010-10-01 12:26:24
【问题描述】:
我正在创建一个新网站,但在执行我想要的文件/文件夹组织时遇到了困难:
为了争论,假设我的网站将托管在: http://mywebsite.com/
我希望(已设置)Apache 的虚拟主机将 http://mywebsite.com/ 映射到 /fileserver/mywebsite_com/www 文件夹。
当我决定将一些文件(favicon.ico 和 robots.txt)放入一个文件夹中时,问题就出现了,该文件夹位于 Apache 正在将 http://mywebsite.com/ 安装到的 /www 之上
robots.txt+favicon.ico go into => /fileserver/files/mywebsite_com/stuff
因此,当人们访问 http://mywebsite.com/robots.txt 时,Apache 会为他们提供来自 /fileserver/mywebsite_com/stuff/robots.txt 的文件
我曾尝试通过 mod_rewrite 设置重定向,但唉:
RewriteRule ^(robots\.txt|favicon\.ico)$ ../stuff/$1 [L]
对我没有好处,因为基本上我是在告诉 apache 提供高于其已安装根目录的内容。
是否有可能通过以不同方式设置 Apache 的 (2.2.9) 虚拟主机或定义某种 RewriteMap 来实现所需的功能,而不是将相关 URL 重写为其他 URL,而是改写为系统文件路径? 如果不是,那么所需组织(如果有的话)的首选行动方案是什么?
我知道我可以通过 PHP 访问前面提到的文件,然后将它们流式传输 - 比如说使用 readfile(..),但我希望 Apache 做尽可能多的工作 - 它肯定比做更快通过 PHP 进行 I/O。
非常感谢,这已经剥夺了我数小时的建设性工作。更不用说可怜的 Apache 每隔几分钟就会重新启动一次。想想可怜的 Apache :)
【问题讨论】:
标签: apache .htaccess mod-rewrite virtual-hosts