2012-11-07 3 views
1

사람들이 일종의 포트폴리오를 만들 수있는 작은 앱을 만들고 있습니다.CakePHP의 ServerName에 따라 변수 설정하기

Router::connect('/:user/:action/*', array('controller'=>'pages'), array('named' => array('user'))); 

그래서 링크가 이런 식으로 형성된다 : www.example.com/USERNAME/home 또는 모든 사용자가 URL www.example.com/USERNAME을 사용하여 자신의 포트폴리오에 연결할 수 있으며,이 라우터 내가 사용 규칙입니다 CakePHP의 모든 것을 처리하는 순간

www.example.com/USERNAME/contact

여기 내 질문이옵니다. 사용자가 자신의 도메인의 DNS를 내 IP로 지정하고 URL을 www.mypersonalsite.com/homewww.mypersonalsite.com/contact 등으로 변경할 수있게하고 싶습니다. 텀블러가하는 것처럼

...

이 작업을 수행하는 가장 좋은 방법은 무엇입니까

?

감사합니다 모두 :

+0

으로, beforeFilter()이 같은 것을 추가 xample.com/username'). 'www.example.com'이나'username.example.com'과 같은 도메인에만 지정할 수 있습니다. 라우팅을 다시 생각해보고 대신 하위 도메인을 사용하는 것이 좋습니다. 그것은 완전히 다른 질문이지만, 확신하기 전에 여기에 답을 얻었습니다. 간단한 예가 있습니다 : http://book.cakephp.org/2.0/en/appendices/new-features-in-cakephp-2-0.html#router – jeremyharris

답변

0

는 사이트 이용 가능한 앱이에 서버를 공격하는 모든 도메인을 전달합니다 귀하의 아파치 설정이되어 있는지 확인

"personal_domain"사용자 테이블에 새 필드를 추가 app_controller에서 당신의 케이크 응용 프로그램

당신은 www.e`(같은 경로로 도메인에 기록을 가리킬 수 없습니다

$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 
    } 
} 
관련 문제