ホームページ  >  記事  >  php教程  >  仮想ドメイン名システムを開発する方法

仮想ドメイン名システムを開発する方法

WBOY
WBOYオリジナル
2016-06-21 09:13:20936ブラウズ

yourname.yeah.net などの短縮ドメイン名を使用すると、誰もが非常に便利だと感じます。自分のサーバーで短縮ドメイン名を実装できればと考えている人は多いでしょう。実際には複雑ではありません。この記事を読んだ後は、短縮ドメイン ネーム システムを作成することもできます。

短縮ドメイン名システムのキーテクノロジーは、Webページのリダイレクト(リディレクトリ)を実現することです。本質的に、短縮ドメイン名システムと仮想マシン システムはまったく異なります。仮想ドメイン名と仮想マシンの IP の間には 1 対 1 の対応関係があります。短縮ドメイン名システムでは、ドメイン名と IP を 1 対 1 でマッピングする必要はありません。つまり、複雑なドメイン名解決メカニズムや仮想マシンを必要とせず、yourname.somedomain をリクエストすると、HTML ページを最初に保存した場所にブラウザーがリダイレクトされます。

より完全に説明するために、凡例を以下に示します。

私が提供するソースプログラムは実行環境です: RedHat 5.1 Linux 上の Apache1.3.6 Web サーバー + PHP3 言語。 プログラムを作成する前に、まずサーバーをセットアップする必要があります。まず、Apache サーバーが php3 をサポートするようにします。 ftp.redhat.com にアクセスして mod_php-2.0.1-9.i386.rpm をダウンロードします。インストール後、/etc/httpd/conf/http.conf ファイルを変更し、#LoadModule php3_module の前にある # コメント番号を削除します。 /etc にもある文 /httpd/conf/srm.conf ファイル内の #AddType application/x-httpd-php3 .php3 の前にあるコメント番号を削除し、DirectoryIndex 項目の後にindex.php3 を追加します。 Apache サーバーを再起動します。この時点で、サーバーは標準の php3 言語スクリプト ファイルをサポートし、index.php3 をデフォルトのホームページとして使用できます。
汎ドメイン名を解決できるように DNS サーバーを設定します。一般的な Unix および Linux システムの DNS 解決は、Bind4 および Bind8 の設定ファイルはそれぞれ /etc/named.boot および name.conf であり、設定中にシステムに応じて変更します。バインド設定ファイル /etc/named.boot を設定し、「primary domain.com db.domain」という文を追加し、新しいドメイン レコードを追加します。 /etc/name.conf に追加します:

ゾーン "domain.com" {
type master;
file "db.domain" };
/var/name/ に新しいマスター ドメイン レコード ファイルを作成します。 、形式は次のとおりです:
N SOA dns.domain.com root.domain.com (
199811291;Serial
28800;refresh
7200;retry
604800;expire
86400);minimum
dns
MX 10 dns.domain.com .
dns A 202.115.135.50
www A 202.115.135.50
* A 202.115.135.50
重要なのは、ドメイン全体のマークされていないすべてのホスト名が同じ IP を指す可能性があるということです。 /usr/sbin/ndc reload を実行して、ドメイン名データベースを再ロードします。この時点で、ドメイン内の任意のホスト (マークされているホストを除く) に ping を実行し、すべてが指定された IP をポイントするようにする必要があります。これで、DNS サーバーの設定が完了します。


最後のステップは、PHP3 スクリプトをコンパイルすることです。全体の原理を図で詳しく説明したので、リダイレクト プログラムを書くのは難しくありません。


IE5.0によって送信される完全なHTTPヘッダー情報を見てみましょう:


Accept: application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, image/gif, image / x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-cn
接続: Keep-Alive
Host:ww.yahoo.com
User-Agent :Mozilla/4.0(互換; MSIE 5.0b1; Windows 98)
HTTPヘッダー情報全体からHost情報を取り出し、 http://www.jj.jx.cn/www の形式に変更する必要があります。 .xxx.xxx/default.htm 最初の部分「www」、つまりHostName(つまりユーザーが登録した名前)を別途取り出して、リダイレクト検索のキーワードとして使用します。


ユーザーの登録URL情報を取得した後、リダイレクトコマンド「Localtion: http://www.jj.jx.cn/somewhere/sample.html」をユーザーのブラウザに送信し、ユーザーを指定されたページにリダイレクトします。


PHP3には、ブラウザから送信されたHTTPヘッダー情報を取得する関数GetAllHeader()があります。主にこの関数を使用してプログラム全体を完成させる必要があります。


ソースプログラムは最後に添付されていますが、あくまで実験的なものなので、ユーザー情報を問い合わせる際にはデータベースは使用しません。システム全体を実用化する場合は、データベースに接続する必要があります。ユーザー情報を照会するプロセスは非常に長く、効率に大きく影響し、ユーザーデータの管理は不便です。 (容量の都合上、登録・管理に必要な書き込み・記録手順は記載しておりません。ご自身で追加してください。)


ソースプログラムでは、すべてのユーザー情報がdataサブディレクトリ配下のuser.datファイルに記録されます。形式は:


ユーザー名:


http://octopus.cdit.edu.cn/~qap213/index.html


添付されたPHP3ソースプログラム:


$headers = getallheaders()
while (list($header, $value) = each($headers);
  if($header=="Host"){$username= strtok($value,".");}}
//バナーのウィンドウから飛び出す//
echo '