1

私は人々が何らかのポートフォリオを構築できる小さなアプリを構築しています。

現在、すべてのユーザーはURLを使用してポートフォリオにリンクでき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にポイントしたり、URLを変更したりできるようにしたいと思いwww.mypersonalsite.com/homeますwww.mypersonalsite.com/contact

tumblrと同じように...

これを達成するための最良の方法は何ですか?

みんなありがとう:)

4

1 に答える 1

0

ユーザーテーブル「personal_domain」に新しいフィールドを追加します

アプリで使用可能なサイトがサーバーにアクセスするすべてのドメインを Cake アプリに転送するように、Apache がセットアップされていることを確認してください。

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
    }
}
于 2012-11-16T07:41:11.797 に答える