2010-09-17 47 views
0

我需要一个mod_rewrite规则来重定向url,具体取决于它们来自的主机名。用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做到这一点?

回答

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] 

的第一条规则将主机和它没有www.存储在环境变量DOMAIN_DIR。第二条规则将一次替换一个点; N标志允许重新启动重写过程而不增加内部递归计数器。最后,第三条规则将把请求重写到相应的目录。