基于子域的Apache重写
我正在尝试将通配符域的请求重定向到子目录。基于子域的Apache重写,apache,redirect,mod-rewrite,subdomain,wildcard-subdomain,Apache,Redirect,Mod Rewrite,Subdomain,Wildcard Subdomain,我正在尝试将通配符域的请求重定向到子目录。 例如,something.blah.example.com-->blah.example.com/something 我不知道如何在重写规则中使用子域名 最终解决方案: RewriteCond %{HTTP_HOST} !^blah\.example\.com RewriteCond %{HTTP_HOST} ^([^.]+) RewriteRule ^(.*) /%1/$1 [L] 或者正如皮利夫所指出的那样 RewriteCond %{HTTP_
例如,
something.blah.example.com
-->blah.example.com/something
我不知道如何在重写规则中使用子域名
最终解决方案:
RewriteCond %{HTTP_HOST} !^blah\.example\.com
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteRule ^(.*) /%1/$1 [L]
或者正如皮利夫所指出的那样
RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.example\.com$
您应该看看apache文档中的 以下内容未经测试,但应与技巧相符:
RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$ http://blah.domain.com/%1/$1 [L,R]
这仅在子域不包含点时有效。否则,您必须在RewriteCond中修改Regexp,以匹配由于锚定而仍然可以工作的任何字符,但这肯定会让您感觉更安全。尝试以下方法:
RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/$1 [L]
@皮利夫(见评论):好吧,这是真的。我刚刚复制了一个在我的一个项目中使用的.htaccess。我猜它有一个稍微不同的方法:)@Sam
你的第二行错了。变量的展开是用%而不是$触发的
RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
^
这应该可以解决问题您的解决方案不会重定向到blah.domain.com,而只是重写到something.blah.domain.com/something,这不是我阅读原始问题的方式。我想,如果它们都由同一虚拟主机提供服务,那就可以了。特别是,这样做意味着客户端看不到重定向-他们仍然看到一些东西。blah.example.com.HA!一个字符的打字错误再次出现:(注意“何时不使用重写”: