我正在构建一个小应用程序,人们可以在其中构建某种组合。
目前,每个用户都可以使用网址www.example.com/USERNAME
链接到他们的投资组合,并处理CakePHP中的所有内容,这是我正在使用的路由器规则:
Router::connect('/:user/:action/*', array('controller'=>'pages'), array('named' => array('user')));
所以以这种方式形成链接:www.example.com/USERNAME/home
或www.example.com/USERNAME/contact
这是我的问题。我希望用户可以将其域名的DNS指向我的IP并更改www.mypersonalsite.com/home
和www.mypersonalsite.com/contact
中的网址,依此类推。
就像tumblr那样...
实现这一目标的最佳方法是什么?
谢谢大家:)
答案 0 :(得分:0)
将新字段添加到用户表“personal_domain”
确保您的Apache已设置好,因此适用于您的应用的网站会将所有访问服务器的域转发到您的Cake应用
在app_controller中将类似的内容添加到beforeFilter()
$domain = $_SERVER[ 'SERVER_NAME' ];
$sessionDomain = '';
if( $this->Session->check( 'User.personal_domain' ) )
{
$sessionDomain = $this->Session->read( 'User.personal_domain' );
}
if( $domain != $sessionDomain )
{
$User = ClassRegistry::init( 'User' );
$domainUser = $User->find( 'first', array(
'conditions' => array(
'User.personal_domain' => $domain
)
) );
if( empty( $domainUser ) )
{
// whatever you usually do for users that don't have their own domain
}
else
{
$this->Session->write( 'User.personal_domain', $domainUser [ 'User' ][ 'personal_domain' ] );
// whatever you usually do, and now you know which user is connecting
// you should use this info with whatever auth method you use to make sure
// only that user can login to that domain
}
}