2016-08-24 10 views
1

現在のsite.comという地域のサブドメインを作成したいとします。city1.site.comcity2.site.comのようなものですが、すべてのファイルを元のドメインからサブドメインにコピーしたくありません。
サブドメインcity1.site.comにはsite.comと同じ情報が表示されますが、1つの変数($city = 123など)を設定するだけですか?この変数をcity1.site.comに設定すると、この都市のより具体的な連絡先と商品を表示できます。地域のサブドメイン

私はサブドメインに新しいので、助けてください、私のサイトはPHPの上にあります& MySQL。ありがとうございました!

答えて

1

リージョンが少ない場合は、リージョンごとに手動でサブドメインを作成し、メインサイトと同じフォルダにドメインをポイントできます。あなたのスクリプトでは、ホストをつかんでそれを地域に合わせ、変数に希望の値を割り当てます。あなたが多くの地域があり、ダイナミックな試合をしたい場合は

<?php 
if($_SERVER['HTTP_HOST'] === 'city1.site.com') { 
    $city = 123; 
} else if($_SERVER['HTTP_HOST'] === 'city2.site.com') { 
    $city = 223; 
} 

は、あなたのメインのサイトのパスに任意のサブドメインを一致させることができますし、スクリプト内で、あなたは、サブドメインを取得するメソッドを使用することができますし、自分のデータベースを検索します。例:

パスにすべてのサブドメインを一致させるには、CPanelでワイルドカードを使用する必要があります。チュートリアルを参照してください:https://www.namecheap.com/support/knowledgebase/article.aspx/9191/29/how-to-create-a-wildcard-subdomain-in-cpanel

+0

チュートリアルをありがとうございますが、nothing.site.comのような不要なサブドメインはどうですか?どのように表示されないようにするか、特にGoogleによってスキャンされないようにする – Ilya

+0

都市が存在しない場合は、404エラーが表示され、そのページが存在しないことをGoogleに伝えます。 インデックスにするものをgoogleに知らせるためにsitemap.xmlファイルを作成する必要があります。 –

+0

さて、私は404がそれをすると思います!ありがとう! – Ilya

1

あなたはおそらく(ドキュメントをお読みください。http://php.net/manual/en/reserved.variables.server.php特に$_SERVER['HTTP_HOST'])PHPで$_SERVERスーパーグローバルを使用することができ、残りは、例えば、Aのために、おそらく簡単です

現在のもの(もしあれば)であるサブドメイン、見つけるために

switch($_SERVER['HTTP_HOST']) { 
    case 'city1.site.com': $abc=1; break; 
    case 'city2.site.com': $abc=2; break; 
    default: $abc=0; break; 
} 

のように、現在のサブドメインに応じて、switchステートメントは、更新:アイデアは、すべてのサブドメインに同じコードを使用します(あなたはコピーの任意の量を維持する必要はありません)などを介して異なる動作を強制することであり、コード。おそらくあなたは何らかの形で「キャッチオール」ドメインをセットアップすることもできます。あなたのセットアップドメインsite.comは、サーバーのhtdocs/site.comディレクトリに住んでいる場合

ので、同様に他のすべてのドメインに対して同じディレクトリを使用しています。あなたのサイトの異なる出力を達成するために

あなたがサブドメインを抽出したら、その後、

if(strpos($_SERVER['HTTP_HOST'],'.site.com') !== FALSE) { 
    $subdomain = str_replace('.site.com','',$_SERVER['HTTP_HOST']); 
} 
else { 
    $subdomain = null; 
} 
// now 'city1' is in $subdomain 

を行うために$abc変数または他のいくつかのVAR(おそらく$_SERVER['HTTP_HOST'])をチェックし、あなたは、SQLクエリを実行したりすることができますその値に似ています(データベースが適切に設定されている場合)。

+0

おかげでそれを維持します!そして、どのように私はcity1.site.comのsite.comのすべての内容を取得するのですか? .htaccessで? – Ilya

+0

そのコードはあなたがまったく同じファイルを持っていると仮定しています。 (つまり、コピーではなく、文字通りすべてのドメインの同じドキュメントルート) – Jakumi

+0

うん!しかし、htaccessやサーバ設定ファイルで、私のサブドメイン上のsite.comからファイルを表示するために必要なルールは何ですか? – Ilya

1

最初のステップは、あなたのDNSレコードが準備ができていることを確認することです。次のレコードが存在しない場合は、そのレコードを追加します。

EDIT - あなたが共有ホストを使用している場合、これは「*」に名前の一部を設定し、適切END

を動作しない可能性がありますし、次はあなたが現在使用しているサーバーのIPアドレスに値します。このルールが設定されると、人々は{anything} .siteに行くことができます。すべて同じサーバーに送信されます。この時点で

、私はJakumiの答えに似た何かをするだろうが、単純

/* Cut up the URL */ 
$hostDetails = explode('.', $_SERVER['HTTP_HOST']); 
/* Get the first part (city) of the URL */ 
$city = current($hostDetails); 
/* Default check */ 
if($city == 'site') { $city = 'YOUR_DEFAULT'; } 
+0

私はこのように好きです!しかし、存在しない都市やnothing.site.comのようなものを入力した場合の対処方法は?どのようにGoogleがそれをスキャンするのを防ぐためにそのようなサブドメインをフィルタリングする? – Ilya

+0

あなたの最初の質問では、何か(DBレコード?)に対してチェックをして、不適切であればデフォルトをしなければならない、またはジャックミの答えを使用する必要があります。 2番目の部分については、私があなたが "ヒット"しない限り、存在しないサブドメインをスキャンすることについてGoogleが心配する必要はないと思います。これが当てはまる場合は、ウェブマスターツールを使用してサブドメインを定義し、削除することができます – Simon