基于子域的Apache重写
时间:2020-03-05 18:49:17 来源:igfitidea点击:
我试图将通配符域的请求重定向到子目录。
IE。 something.blah.domain.com
->blah.domain.com / something
我不知道如何获取在重写规则中使用的子域名。
最终解决方案:
RewriteCond %{HTTP_HOST} !^blah\.domain\.com RewriteCond %{HTTP_HOST} ^([^.]+) RewriteRule ^(.*) /%1/ [L]
或者如pilif所指出
RewriteCond %{HTTP_HOST} ^([^.]+)\.media\.xnet\.tk$
解决方案
回答
我们应该查看apache文档中的《 URL重写指南》。
以下未经测试,但应达到目的:
RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$ RewriteRule ^/(.*)$ http://blah.domain.com/%1/ [L,R]
仅在子域不包含点的情况下才有效。否则,我们将不得不在RewriteCond中更改Regexp以匹配由于锚定而仍可以正常工作的任何字符,但这无疑会更安全。
回答
试试这个:
RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com RewriteRule ^(.+)$ /%1/ [L]
@pilif(请参阅评论):好的,是的。我只是复制了一个项目中使用的.htaccess文件。猜猜它有一个稍微不同的方法:)
回答
@山姆
RewriteCond行是错误的。变量的扩展由%而不是$触发。
RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$ ^
这应该够了吧