如何使用Cake PHP创建子域?

Nis*_*ava 4 php subdomain dns cakephp

我正在构建一个站点,该站点需要为每个配置文件提供唯一的子域.我使用的技术是Cake PHP + MongoDB.我需要知道同样的可行性.我是否可以创建物理DNS,或者我可以通过Cake PHP中的Routes Class来简单地路由用户的Profile页面.请提出一些更好,更简单的实施方法以及相同的可行性.

提前致谢.

小智 5

如果您为每个网站使用CakePHP,则无需担心每个站点创建多个子域,您只需创建通配符DNS记录即可.这消除了服务器和DNS管理的许多麻烦.

通配符DNS记录(Wiki)

使用通配符DNS记录,然后可以使用HTTP_HOST或CakePHP方式$ request-> host()来确定用于访问系统的主机名(子域).然后,您可以在AppController的beforeFilter()方法中加载正确的配置文件详细信息,然后从那里继续前进.

我做了类似的事情:

class User extends AppModel
{
     public $belongsTo = array(
          'Profile'
     );

     public function findByProfileHostname($hostname) {
         return $this->find('first', array('conditions' => array(
             'Profile.hostname' => $hostname
         ));
     }
};

class AppController extends Controller
{
    public function beforeFilter () {
        $this->ActiveUser = $this->User->findByProfileHostname($this->request->host());
        if (!$this->ActiveUser) {
            throw new InvalidArgumentsException(__('%s is not active here', $this->request->host()));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

*免责声明:以上代码已从内存中输入,可能无法直接通过复制/粘贴工作.

希望这可以帮助.