在Apache中包含两个文档根?

时间:2013-01-30 19:08:23

标签: apache httpd.conf

我在原始服务器上有数百个jpg的http://example.com/pic1.jpg,pic2.jpg,pic3.jpg等等,但是我需要将它移到http://example.com/pictures/pic [##]。JPG。许多不同的服务器和页面链接到这些图片,所以如果可能的话,我不想只是移动图片并更改链接。是否可以在Apache中包含另一个目录作为第二个文档根?

所以,即使图片实际位于/pictures/pic1.jpg,链接到/pic1.jpg也可以正常工作?

编辑:我不想进行符号链接,因为在根目录中有这么多图片的混乱。

2 个答案:

答案 0 :(得分:2)

当根目录中没有该文件名的文件时,您可以使用根目录中的.htaccess文件将所有请求重定向到图片目录。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /pictures/$1 [L]

关于主要问题。不,不可能有两个文档根(从逻辑的角度来看也不可接受)。但您可以使用.htaccess文件重定向请求。

答案 1 :(得分:0)

在我的httpd.conf文件中,对于文档根目录,我现在有以下块:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+) http://example.com/pictures%{REQUEST_URI}
</Directory>

因此,如果您尝试转到http://example.com/pic1.jpg但它不存在,则会将您重定向到http://example.com/pictures/pic1.jpg。这可以做得更好,就像REQUEST_URL包含.jpg时一样,但它现在适用于我。