Apache Rewrite:%{HTTP_HOST}目录中的特定于域的库图像

时间:2012-02-16 22:30:37

标签: apache mod-rewrite

在共享网络托管上,我的软件支持多个域(所有域都指向相同的public_html根目录)。每个域都有自己的图库(在图库目录中)。由于多个域在所有站点的同一目录中不能拥有自己的资源(例如图像),因此我拥有与每个HTTP主机名匹配的根目录。这是目录结构的样子......

  

/的public_html /

     

/public_html/.htaccess

     

/的public_html /画廊/

     

/public_html/www.example1.com/gallery/topic_x/image.png

     

/public_html/www.example2.com/gallery/topic_y/image.jpg

     

/public_html/www.example3.com/gallery/topic_z/image.gif

请求......

  

http://www.example1.com/gallery/topic_x/image.png

...需要重写为......

  

/public_html/www.example1.com/gallery/topic_x/image.png

这需要使用.htaccess文件来完成,如上所述,HTTP主机匹配目录中没有.htaccess文件(/public_html/www.example1.com/.htaccess不存在)。

我一直在尝试对以下内容进行多次修改......

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(gallery)(/.+\.(gif|jpg|png))$ %{HTTP_HOST}$1$2 [L,NC]

......没有成功。

1 个答案:

答案 0 :(得分:1)

这个适用于我:

RewriteRule ^(gallery/.+\.(gif|jpg|jpeg|png))$ /%{HTTP_HOST}/$1 [L,NC]

如果你想 - 你可以添加额外的检查,只有在这样的最终图像存在的情况下重写(虽然我没有测试过):

RewriteCond {%DOCUMENT_ROOT}/%{HTTP_HOST}/$1 -f
RewriteRule ^(gallery/.+\.(gif|jpg|jpeg|png))$ /%{HTTP_HOST}/$1 [L,NC]

但即使你的模式应该可以工作(至少它通过测试) - 也许.htaccess没有启用..或者你忘了激活重写引擎(RewriteEngine On)?

我还建议在激活引擎之前(或之后)添加此行:

Options +FollowSymLinks

Options +SymLinksIfOwnerMatch

某些共享主机可能仅适用于第二个,因为第一个就足够了。