質問

サインアップしたユーザーに独自のサブドメインを取得してもらいたい Web サイトがあります。このサブドメインは仮想であり、すべてのサブドメインは同じ Web サーバー ファイルを使用します。

私は PHP と Apache を使用しており、仮想ホストについては知っていますが、vhosts コードをどこに配置する必要があるのか​​疑問に思っています。まず、httpd.conf にアクセスできません。次に、これを登録時に自動的に実行したいと考えています。

仮想ホストについて読んだことがありますが、私の質問に答えられるものは見つかりませんでした。これらすべてがどのように連携するのか説明できる人、または答えがどこで見つかるのか知っている人はいますか?

役に立ちましたか?

解決

あなたは余分な.confファイルを読むためにApacheを伝えることはできますか? (伝統的にあなたはHTTPD-vhosts.confであなたのバーチャルホストを保存)

ので、以下のようなものを追加して、あなたのウェブサーバを再起動する場合は、

NameVirtualHost *:80

<VirtualHost *:80>
        DocumentRoot /abs/path/to/webroot
        ServerName   domainname.com
        ServerAlias *.domainname.com
        <Directory /abs/path/to/webroot>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

その後、PHPで、ユーザーが検査することで要求しているサブドメインを確認できます:

$_SERVER['HTTP_HOST']

すなわち。ユーザーの要求であれば http://user1.domainname.com/index.phpする

$ _、SERVER [ 'HTTP_HOST']がありますuser1.domainname.com

あなたは、など。各セグメントを検査する( ' ' $ _SERVER [' HTTP_HOST']を)爆発することができます。

他のヒント

あなたは、このための3事が必要になります

1。 * .yourDomain.com

のためにあなたのDNSを設定します

2。 このドメインのApacheの設定ににServerAliasディレクティブを追加します:

ServerName www.yourDomain.com
ServerAlias *.yourDomain.com yourDomain.com

また、あなたがApacheサーバが(これがデフォルトです)

UseCanonicalNameに設定onていることを確認してください

3。 PHPでサブドメイン名をGREPます:

  $nameChunks = explode('.', $_SERVER['HTTP_HOST']);
  $subDomainName = $nameChunks[count($nameChunks) - 3];

(Janek のコメントに触発されました)

Apache インスタンスが * エイリアシング用に構成されている場合、仮想名前付きホストを作成する必要はありません。$_SERVER['HTTP_HOST'] を評価することで、PHP で偽装できます。

Apache インスタンスがこれを処理できるかどうかを確認するには、ローカルの /etc/hosts ファイル (または Windows の同等ファイル - %SystemRoot%\system32\drivers\etc\hosts) を編集して、目的の仮想名がサーバーを指すようにします。

例えば

# An example HOSTS file.
192.168.1.4 testserver testserver.com subdomain.testserver.com secondname.com

ここでは、192.168.1.4 がサーバーの IP であると仮定しています。それ以降はすべて、サーバーを呼び出すことができるエイリアスです。

次に、Janek が提案したように、 echo $_SERVER['HTTP_HOST'] 名前が正しくキャプチャされているかどうかを確認します。その場合、必要なのは DNS の変更だけであり、Apache は変更しないで済みます。

それ以外の場合は、Apache.conf にアクセスできない場合 (これは、多くのものにアクセスできないことを意味します)、これを実行するのは困難です。プログラミングはそうではありませんが、実装はそうなります。

その理由は次のとおりです。

  1. Apache はデフォルトで仮想ホストを提供します。ただし、仮想ホストの「インクルード」ファイルを作成できるように、サーバーの conf ディレクトリ (通常は /etc/httpd/conf.d/ にあります) にアクセスする必要があります (Apache 構成がそれを含めるように設定されている場合 - 最新のインストールでは、なれ)。

  2. Apache をサイクル (再起動) できる必要があります。これがないと、仮想ホストの変更は有効になりません。

  3. DNS を変更できる必要があります。ローカルの /etc/hosts ファイルはいつでも変更できますが、訪問者がサイトにアクセスするには、DNS の変更をプッシュできる必要があります。(これは瞬時に行われる場合もありますが、伝播するまでに 24 時間かかる場合もあります)。

スクリプト作成は確かに実行できます (Cpanel と WHM を参照)

あなたが最初にすべてのあなたのメインのIPアドレスへのすべてのサブドメインを解決するために、セットアップにDNSサーバが必要になります、すなわち*.domain.comサーバーのIPアドレスに解決する必要があります。そして、Webサーバは、いくつかのPHPスクリプトを呼び出し、同様にかかわらず、サブドメインのすべての着信要求を処理する必要があります。 PHPスクリプトは、単に$_SERVER['HTTP_HOST']ヘッダから要求されたもののドメインを把握し、それに応じて行動することができます。

あなたは、実際に「ユーザー登録の際にサブドメインを作成」していない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top