我试图将对通配符域的请求重定向到子目录
即。 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$
答案 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$
^
应该做的伎俩