在我的新网站上,我想拥有动态子域。我试图让子域使用与主域相同的 Web 根目录,并且全部位于单个 CodeIgniter 安装下。例如,subdomain.example.com 将指向 example.com/subdomain,而后者实际上是 example.com/index.php/subdomain。
我已经设置了 DNS、虚拟主机,但我还在忙于.htaccess。
链接的 htaccess 的效果是,当导航到任何子域时,它都会陷入无限循环。(一次请求后的错误日志。) 对于 www. 来说,效果是一样的,只需解析到主域名即可。
答案1
请尝试以下操作:
RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{HTTP_HOST} ^(.*).\crashworks\.co [NC]
RewriteRule ^(.*)$ http://www.crashworks.co/d/%1 [L,R=301]
这里要注意的重要一点是使用(.*)
和RewriteCond
,%1
这是针对匹配的反向引用RewriteCond
。此外,!^www
可防止无限循环。
查看Apache 文档以获取有关 的更多文档mod_rewrite
。
我还包含了/d/
可能更容易用它进行 CodeIgniter 路由的内容,即具有特定的控制器和/或路由设置。
边注:此外,考虑www
与您的站点/域设置一起使用,我意识到在处理单个域的多个主机时,编写规则和其他管理/服务器相关配置变得更加容易。
与上述规则不同,我还没有测试过以下规则,这些规则在没有该规则的情况下也可以工作www
(你可以保留“强制执行无 www”规则):
RewriteCond %{HTTP_HOST} !^crashworks\.co [NC]
RewriteCond %{HTTP_HOST} ^(.*).\crashworks\.co [NC]
RewriteRule ^(.*)$ http://crashworks.co/d/%1 [L,R=301]