1

我将所有图像集中到服务器上的一个文件夹中。我有几个网站使用一个集中式引擎来获取每个域的各自内容。图片的目录结构为:

images/
  website1.com/
    image1.jpg
    image2.jpg
    ...
  website2.com/
    image1.jpg
    image2.jpg
    ...
  website3.com/
    image1.jpg
    image2.jpg
    ...

但是,当我从 HTML 请求这些图像资源之一时,我不想使用 URL:

http://website1.com/images/website1.com/image1.jpg

相反,我只是想要:

http://website1.com/images/image1.jpg

但是,有两种情况我需要翻译。实时服务器和开发服务器。现场案例似乎很简单,将 %{HTTP_HOST} 重写到路径中。开发服务器的情况略有不同。我使用一个名为 dev_domain 的 cookie 来查看测试站点。即:$_COOKIE['dev_domain'] = website1.com。

制作现场案例和开发服务器案例的规则是什么?

这是我到目前为止的开发案例,但它不起作用:

RewriteBase /
RewriteCond %{HTTP_COOKIE} dev_domain=([^;]+) [NC]
RewriteCond %{THE_REQUEST} ^/images/(.*)$
RewriteRule ^/images/(.*)$ images/%1/$1 [NC,L]

这是我为现场案例所拥有的,尚不确定它是否有效,因为我没有将其推送到现场(条件是排除开发服务器):

RewriteCond %{HTTP_HOST} !^dev.mainsite.com$
RewriteRule ^/images/(.*)$ /images/%{HTTP_HOST}/$1 [NC,L]

关于我做错了什么的任何想法?

4

1 回答 1

0

你看起来就快到了。该RewriteRule指令不应有前导/

# Added [NC] to the host RewriteCond, removed [NC] from the RewriteRule
RewriteCond %{HTTP_HOST} !^dev.mainsite.com$ [NC]
RewriteRule ^images/(.*)$ /images/%{HTTP_HOST}/$1 [L]
#----------^^^---no leading /

将相同的更改模式应用于您的开发站点规则。

于 2012-11-18T19:33:23.357 回答