0

私は以前の投稿を読んでいますが、私のセットアップで何が機能するか、または機能しないかを理解できないので、ここでの助けは大歓迎です!

手始めに、私はCakePHP(2.2)の最新リリースを使用しています。MediaTemple付きの(gs)アカウントでホスティングしています。

domain.comでユーザーがアカウントにサインアップできるサイトがあります。

ユーザーは、dashboard.domain.comで自分の情報にアクセスして変更できます。

ユーザーは、sites.domain.com/usernameで個人情報を表示できます。ユーザーはデータベースからテーマを選択することでこのページの外観を変更できます。このために、私はCakePHPのテーマ構造を使用しています。複数のcssオプションを備えた1つの基本的なレイアウトがあるため、すべてがデータベースからこの1つのファイルにプルされ、選択した「テーマ」に応じて、異なるcssファイルがプルされます。それはすべてうまくいきます。

私が好むのは、ワイルドカードサブドメイン(?)からページを表示することです。sites.domain.com/usernameの代わりにusername.domain.com。

また、独自のドメイン名を登録し、URLに一意のドメインを表示しながら、サブドメインをポイント/リダイレクト/何かするオプションを提供したいと思います。また、追加のドメイン名をホストする必要がないので、これをネームサーバーで実行できますか?

私がここからどこへ行くのかについて何か考えはありますか?前もって感謝します :)

4

1 に答える 1

2

これは非常に一般的な要求であり、Webアプリケーション開発への「マルチテナンシー」アプローチに該当します。

私は最近、このアプローチを使用する質問に答えました。

コード

リンクされた答えは、CakePHP側で動的サブドメインをサポートするために使用するDomainRouteを示しています。これには、プロジェクトのその時点から処理するために必要なすべてのコードが含まれています。

そこにある唯一のアプリケーション固有のコード、および変更する必要のあるコードは、Cause関連するものです。

$Cause = new Cause();
if (!($Cause->domainExists($domain) ...

Causeは私のアプリケーションのモデルであり、domainExistsメソッドがあります。このメソッドは、渡されたものがいずれか(またはサブWebサイト)$domainに存在するかどうかを確認します。Causeの実装domainExistsは非常に単純なfind呼び出しです。

public function domainExists($domain) {
    $causes = $this->Cause->findByDomain($domain);
    return !empty($causes);
}

ドメインがデータベースに存在する場合は、ドメイン全体が$params変数に追加されます。

ドメインがデータベースに存在しない場合は、リダイレクトが行われます。

DNS

DNSはワイルドカードとして設定する必要があります。これが行われる方法はプロバイダーごとに異なりますが、通常のBINDでは、次のように行われます。

* CNAME domain.com.

これにより、DNSレコードにワイルドカードCNAMEが追加されます。

それがお役に立てば幸いです。以前に回答した質問のコードが最も役立つので、最初にそれを注意深く読んでください。

于 2012-08-08T23:29:23.537 に答える