我需要一个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 :(得分: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 标志允许重新启动重写过程而不增加内部递归计数器。最后,第三条规则将请求重写到相应的目录。