Apache重写基于子域

时间:2008-09-08 11:24:43

标签: apache mod-rewrite

我试图将对通配符域的请求重定向到子目录 即。 something.blah.domain.com - > blah.domain.com/something

我不知道如何在重写规则中使用子域名。

最终解决方案:

RewriteCond %{HTTP_HOST} !^blah\.domain\.com
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteRule ^(.*) /%1/$1 [L]

或正如pilif所指出的

RewriteCond %{HTTP_HOST} ^([^.]+)\.media\.xnet\.tk$

3 个答案:

答案 0 :(得分:33)

您应该查看apache文档中的URL Rewriting Guide

以下是未经测试的,但它应该是诀窍:

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$           http://blah.domain.com/%1/$1 [L,R] 

仅当子域不包含点时才有效。否则,你必须改变RewriteCond中的正则表达式以匹配任何因锚定而仍然有效的角色,但这肯定会更安全。

答案 1 :(得分:3)

试试这个:

RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/$1 [L]

@pilif(见评论):好的,那是真的。我刚刚复制了一个我在其中一个项目中使用的.htaccess。猜猜它的方法略有不同:)

答案 2 :(得分:1)

@Sam

你的RewriteCond系列错了。变量的扩展由%触发,而不是$。

RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
            ^

应该做的伎俩