.htaccess重写多个域

时间:2012-11-18 19:30:01

标签: apache .htaccess mod-rewrite

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

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]

关于我做错的任何想法?

1 个答案:

答案 0 :(得分: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 /

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