24

Basecampのように、ユーザーが私がいじっているアプリのサブドメインを制御できるようにしたいと考えていcustomusername.seework.comます。

DNSこれらを動的に作成して即座に利用できるようにするために、最後に必要なもの。

そして、サイトのロジックでこれに対処することをどのように推奨しますか??Htaccess内のサブドメインを検索するルールDB

4

4 に答える 4

14

これを行う方法は、DNSに登録されているドメイン名の「すべてをキャッチ」して、anything.ourdomain.comがサーバーを指すようにすることです。

Apacheを使用すると、vhostに同様のキャッチオールを設定できます。ServerNameは単一の静的な名前である必要がありますが、ServerAliasディレクティブにはパターンを含めることができます。

Servername www.ourdomain.com
ServerAlias *.ourdomain.com

これで、すべてのドメインがプロジェクトの仮想ホストをトリガーします。最後の部分は、実際に使用されているドメイン名をデコードして、コード内のユーザー名を(PHP)のように計算できるようにすることです。

list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );

または、user.ourdomain.com / foo/barをwww.ourdomain.com/foo/bar?user=userまたは任意の値にサイレントにマップすることをすでに提案しているRewriteRule。

于 2008-08-04T13:39:39.423 に答える
8

DNSとURLの書き換えについて心配する必要はありません

DNSレコードは静的になり、次のようになります。

*.YOURDOMAIN.COM A 123.123.123.123

DNSプロバイダーに依頼して(まだ行っていない場合)、DNSレコードを管理している場合は自分で行ってください。これにより、すべてのサブドメイン(現在および将来のサブドメイン)が同じHTTPサーバーを自動的に指すようになります。

完了したら、すべてのhttpリクエストでHOSTヘッダーを解析するだけで、httpサーバー上のサーバー側スクリプトにアクセスするために使用されたホスト名を検出できます。

ASP.NETを使用していると仮定すると、これは私が思いついた一種のばかげた例ですが、このアプローチの単純さを示しています。

<%@ Language="C#" %>
<%
string subDomain = Request.Url.Host.Split('.')[0].ToUpper();
if (subDomain == "CLIENTXXX") Response.Write("Hello CLIENTXXX, your secret number is 33");
else if (subDomain == "CLIENTYYY") Response.Write("Hello CLIENTYYY, your secret number is 44");
else Response.Write(subDomain+" doesn't exist");
%>
于 2008-08-04T12:32:24.143 に答える
2

その秘訣は、URL書き換えを使用して、name.domain.comがサーバー上のdomain.com/users/nameのようなものに透過的にマップされるようにすることです。その道を歩み始めたら、実装するのはかなり簡単です。

于 2008-08-04T12:28:03.467 に答える
0

私は似たようなことをしようとしていました(www.mysite.com/SomeUser)。

私がしたこと404.shtmlは、このサーバー側インクルード (SSI) コードを含めるように編集したことです。

<!--#include virtual="404.php" -- >

次に、ファイルを作成し404.php、URL を解析してユーザーの名前を確認し、データベースから情報を表示しました。

于 2009-10-12T15:28:31.603 に答える