2016-03-24 16 views
0

我想在我的Apache服务器上代理一堆图像,以便它们不存储在webroot中。
具体来说,我有我的Linux服务器上我在下面的文件夹中的所有图像:如何编写.htaccess文件,以便它可以在Apache服务器上的Web根目录之外代理图像?

/var/www/img/ 

不过,我想它,以便当用户进入mydomain.com/img/img1.jpg(其中有服务器的路径/var/www/html/img/img1.jpg),它引用了Web根目录之外的以下文件:

/var/www/img/img1.jpg 

这样看来,用在.htaccess文件(来源:https://httpd.apache.org/docs/2.4/rewrite/avoid.html#proxy)的ProxyPassProxyPassReverse规则是可能的,但我有麻烦的理解了继承人的语法和哪个路径去哪里等

鉴于我的上述情况,有人可以提供一些明确的代码,我可以写入一个.htaccess文件来实现我想要的吗?


编辑

Alias "/img" "/var/www/img" 

/img部分指img目录:我刚加入下面的一行到我的Apache httpd.conf文件,然后重新启动服务器解决了这个问题在我的webroot中,而/var/www/img部分是指我要指向的Linux文件系统目录中的实际文件。

+1

当我主持的是东东的根目录以外的图像(或任何东西) ds可以被公众访问,我使用一个符号链接。这对你来说是一种选择吗?即'ln -s/var/www/img/var/www/html/img' –

+0

这似乎不起作用。我可能做得不正确,但我输入了你推荐的内容,没有错误,但它似乎不起作用。 – HartleySan

+0

这可能是一些事情,很难说,因为我不知道你的设置。一般来说,这个想法是将你的图像文件夹(不是*)放到webroot上的*符号链接。您的网站也必须配置为遵循符号链接。 –

回答

0

您可以尝试使用PassThrough PT flag和mod_rewrite做到这一点。

您为实际路径创建一个别名,然后在规则中使用它。

Alias "/img" "/var/www/img/" 
RewriteRule "img/(.+)\.(jpe?g|gif|png)$" "/img/$1.$2" [PT] 

看看它是如何工作的。

+0

巴拿马杰克,我不确定在编辑我的问题时你是否正在编写答案,但我完全按照“Alias”指令提出的建议,而这似乎解决了我的问题。带有'PT'标志的'RewriteRule'是什么增加了'Alias'本身并不提供?谢谢。 – HartleySan

+0

现在可能没什么了。如果您没有与您的别名相同的名称**,PT规则会更有帮助。 'img'。例如,如果它是URL中的“图片”,则PT规则将与“别名”一起解决问题。例如'RewriteRule“pics /(。+)\。(jpe?g | gif | png)$”“/img/$1.$2”[PT]'看看你为什么需要它? –

+0

@HartleySan由于这有助于解决您的问题,请接受答案。 –

0

最好的办法是一个符号链接添加到您的其他文件夹:

ln -s /my/target/folder /var/www/html/mynewfolder 

如果你可以编辑你需要添加的FollowSymLinks指令目录块服务器Apache的的conf文件:

<Directory "/var/www/html/"> 
    AllowOverride All 
    Options FollowSymLinks 
</Directory> 

你也可以将它添加到您的.htaccess文件为Options +FollowSymLinks,如果你不能编辑Apache的文件

相关问题