2016-08-24 3 views
1

Ich möchte einige regionale Subdomains meiner aktuellen site.com - so etwas wie city1.site.com und city2.site.com machen, aber ich möchte nicht alle Dateien von der ursprünglichen Domäne in Subdomain kopieren.
Ist es möglich, auf Subdomain city1.site.com die gleichen Informationen wie auf site.com anzuzeigen, aber nur eine Variable, etwa $city = 123? Mit dieser Variable aufkann ich spezifischere Kontakte und Produkte für diese Stadt zeigen.Regionale Subdomains

Ich bin neu in Subdomain so bitte helfen, meine Website ist auf PHP & MySQL. Vielen Dank!

Antwort

1

Wenn Sie nur wenige Regionen haben, können Sie für jede Region manuell Subdomains erstellen und die Domänen auf den gleichen Ordner wie Ihre Hauptwebsite verweisen. Dann greifen Sie in Ihrem Skript den Host und passen ihn an Regionen an und weisen einer Variablen den gewünschten Wert zu.

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

Wenn Sie viele Regionen haben und ein dynamisches Spiel wollen, können Sie jede Sub-Domain zu Ihrem Haupt-Website Pfad entsprechen und innerhalb des Skripts können Sie eine Methode verwenden, um die Sub-Domain zu erhalten und in Ihrer Datenbank suchen. Beispiel:

<?php 
$subdomain = strstr($_SERVER["HTTP_HOST"], '.', true); 
$city = getRegion($subdomain); 
if(!$city) { 
// throw 404 error 
    header('HTTP/1.0 404 Not Found'); 
    exit; 
} 
// getRegion($subdomain) is a method that should search your database to match the subdomain to a region 

Um alle Subdomains mit einem Pfad abzugleichen, müssen Sie Platzhalter in CPanel verwenden. Siehe Lernprogramm: https://www.namecheap.com/support/knowledgebase/article.aspx/9191/29/how-to-create-a-wildcard-subdomain-in-cpanel

+0

Vielen Dank für Tutorial, aber was ist mit unerwünschten Subdomains wie nothing.site.com? Wie verhindern sie, dass sie angezeigt werden, insbesondere nicht von Google gescannt werden? – Ilya

+0

Wenn Sie eine Stadt haben, die nicht existiert, werfen Sie einen 404-Fehler, um Google mitzuteilen, dass diese Seite nicht existiert. Sie müssen sitemap.xml-Dateien erstellen, um Google mitzuteilen, was indexiert werden soll. –

+0

Ok, ich denke, 404 wird es tun! Vielen Dank! – Ilya

1

Sie können sich wahrscheinlich verwenden, um die $_SERVER Superglobals in PHP (die Dokumentation lesen: http://php.net/manual/en/reserved.variables.server.php vor allem die $_SERVER['HTTP_HOST']), um herauszufinden, welche Sub-Domain die aktuelle ist (falls vorhanden)

Der Rest ist wahrscheinlich einfach, zum Beispiel ein switch-Anweisung auf dem aktuellen Sub-Domain abhängig wie

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

Update: die Idee ist, für alle Sub-Domains den gleichen Code zu verwenden (Sie wollen nicht eine beliebige Anzahl von Kopien halten) und zwingen unterschiedliches Verhalten durch Code. vielleicht können Sie sogar eine "Catchall" -Domäne einrichten.

Also, wenn Sie Setup Ihre Domain site.com in Ihrem Server htdocs/site.com Verzeichnis zu leben, verwenden Sie das gleichen Verzeichnis für alle anderen auch Domains.

an verschiedene Ausgänge für Ihre Websites zu erreichen, können Sie die $abc Variable oder eine andere var dann überprüfen (vielleicht sogar $_SERVER['HTTP_HOST'])

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

zu tun, nachdem Sie die Sub-Domain extrahiert haben, können Sie SQL-Abfragen oder die laufen wie mit diesem Wert (wenn Ihre Datenbank entsprechend eingerichtet ist).

+0

Dank halten! Und wie bekomme ich alle Inhalte von site.com auf city1.site.com? Mit .htaccess? – Ilya

+0

Dieser Code ist unter der Annahme, dass Sie genau die gleichen Dateien haben. (was bedeutet, nicht einmal eine Kopie, aber buchstäblich das gleiche Dokument Wurzel für alle Domains) – Jakumi

+0

Yeah! Aber welche Regeln brauche ich in htaccess oder vielleicht Serverkonfigurationsdateien, um Dateien von site.com auf meinen Subdomains anzuzeigen? – Ilya

1

Als ersten Schritt stellen Sie sicher, dass Ihre DNS-Datensätze bereit sind. Fügen Sie einen A-Eintrag für die folgenden hinzu, wenn sie nicht bereits vorhanden sind.

EDIT - Wenn Sie einen gemeinsamen Host verwenden, dies funktionieren möglicherweise nicht richtig END

der Namensteil Set zu ‚*‘ und dann die nächste Sie derzeit auf dem Server die IP-Adresse auf den Wert verwenden . Sobald diese Regel vorhanden ist, können die Benutzer zu {irgendetwas} .site gehen.com und werden alle an den gleichen Server gesendet.

An dieser Stelle möchte ich etwas Ähnliches wie Jakumi Antwort tun, aber es einfacher

/* 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

Ich mag diesen Weg! Aber was tun, wenn sie nicht existierende Stadt eingeben oder was auch immer wie nothing.site.com? Wie filtere ich solche Subdomains, um zu verhindern, dass Google sie scannt? – Ilya

+0

Für Ihre erste Frage, müssen Sie eine Prüfung gegen etwas (DB-Eintrag?) Und dann Standard, wenn falsch oder verwenden Sie Jakumis Antwort. Im zweiten Teil denke ich, dass Sie sich keine Gedanken darüber machen müssen, ob Google nicht existierende Subdomains scannt, wenn sie nicht "getroffen" werden. Wenn dies der Fall wäre, könnten Sie die Webmaster-Tools verwenden und die Subdomains so definieren, dass Sie sie entfernen können – Simon