2

我正在启动一个新网站,但在执行我想要的文件/文件夹组织时遇到了困难:

为了论证起见,假设我的网站将托管在: 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 做尽可能多的工作——它肯定比做 I/O 更快通过 PHP。

非常感谢,这已经剥夺了我几个小时的建设性工作。更不用说可怜的 Apache 每隔几分钟就会重新启动一次。想想可怜的阿帕奇:)

4

2 回答 2

4

看来您已设置为使用 RewriteRule。但是,我建议您使用别名:

Alias /robots.txt /fileserver/files/mywebsite_com/stuff/robots.txt

此外,您必须告诉 Apache 该文件的限制。如果您有多个文件以这种方式处理,请对完整目录执行此操作:

<Directory /fileserver/files/mywebsite_com/stuff>
    Order allow,deny
    Allow from all
</Directory>
于 2009-01-16T15:53:26.193 回答
1

你可以使用符号链接吗?

ln -s /fileserver/files/mywebsite_com/stuff/robots.txt /fileserver/files/mywebsite_com/stuff/favicon.ico /fileserver/mywebsite_com/www/

ln就像cp,但创建符号链接而不是副本-s。)

于 2009-01-15T02:21:00.190 回答