用mod_rewrite替换URL的部分内容

时间:2010-09-17 09:23:27

标签: apache mod-rewrite redirect url-rewriting

我需要一个mod_rewrite规则来重定向url,具体取决于它们来自的主机名。

情况:

我们有多个域指向同一个网站空间,我们需要限制特定主机可以看到/下载的内容。

domainname.com/images/logo.jpg和/www.domainname.com/images/logo.jpg应转换为domainname.com/domainname_com/images/logo.jpg

所以基本上我需要一个规则/函数用%替换%{HTTP_HOST}中的点,并删除/替换www子域。

用mod_rewrite有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

请尝试以下规则:

RewriteCond %{ENV:DOMAIN_DIR} ^$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^images/.+ - [E=DOMAIN_DIR:%2]

RewriteCond %{ENV:DOMAIN_DIR} ^([^.]*)\.(.+)
RewriteRule ^images/.+ - [E=DOMAIN_DIR:%1_%2,N]

RewriteCond %{ENV:DOMAIN_DIR} ^[^.]+$
RewriteRule ^images/.+ %{ENV:DOMAIN_DIR}/$0 [L]

第一条规则将主持并将其存储在环境变量 DOMAIN_DIR 中,而不是www.。第二条规则将一次取代一个点; N 标志允许重新启动重写过程而不增加内部递归计数器。最后,第三条规则将请求重写到相应的目录。