2009-03-11 5 views
5

Ich habe schon eine Weile gesucht, um eine Lösung zu finden, um das folgende System zu erreichen.Verwalten Sie mehrere Websites aus einer Domäne

Ich würde gerne ein PHP-System auf, sagen wir, DomainA. Auf dieser Domain erlaube ich einem Administrator, eine neue Website zu erstellen. Diese Website enthält nur Textstücke, die alle in einer Datenbank gespeichert sind. Das weiß ich zu tun.

Allerdings möchte ich nun ermöglichen, dass Besucher, die auf DomainB surfen, unsichtbar umgeleitet werden, zum Beispiel domainA.com/gateway.php?refdomain=domainB & page = xxx oder etwas Ähnliches. Ich habe eine vage Idee, dass dies von .htaccess getan werden sollte, aber ich weiß nicht wirklich, wie ich das auf die einfachste Weise machen kann. Wenn es zum Beispiel einige POST- oder GET-Anfragen auf DomainB gibt, sollte dies weiter funktionieren. Auch Bilder, die mit http://www.domainB.com/test.gif verknüpft sind, sollten von www.domainA.com unsichtbar geladen werden.

Ich weiß auch, es gibt einige CMS-Systeme (zB drupal), die diese Funktion erlauben, so ist es möglich, ich weiß einfach nicht wie.

Sie für jeden Rat danken, die mich in die richtige Richtung zeigen könnte, freundlichen Grüßen Digits

Antwort

0

Grundsätzlich möchten Sie alle Ihre Domänen auf das gleiche Verzeichnis verweisen (möglicherweise mit einem Platzhalter in Ihrem vhosts) und dann Setup urlrewrite; Sehen Sie sich this question als Beispiel an, und es kann in einer .htaccess-Datei oder Apache-Konfiguration sein.

Alle eingehenden Anfragen werden an die gateway.php weitergeleitet und Sie können die aktuelle Domain und die Anfragen z. B. mit $_SERVER['REDIRECT_QUERY_STRING'], $_SERVER['REQUEST_URI'] und $ _SERVER['SERVER_NAME'] extrahieren. Siehe $_SERVER. Sie können dann in Ihrer gateway.php die richtigen Dateien senden.

+0

Dies ändert nicht die URL in der Adressleiste des Browsers, es ist für den Benutzer transparent. – lpfavreau

0

Wenn Sie ein CMS wie Drupal verwenden nutzen könnten, sollten Sie in der Lage sein, diese über den Portal Alias ​​zuzuordnen. Durch die Verwendung des Alias ​​können Sie verschiedene Domänen zuweisen, die auf verschiedene "Sites" zeigen, die erstellt werden.

+0

wollte ich denke, dass er versucht, ein CMS zu vermeiden, mit. –

2

Hosten Sie beide auf derselben Maschine? Wenn ja, könnte so etwas wie VirtualHosts in Apache für Sie lösen.

mod_alias und mod_rewrite könnte auch von Nutzen für Sie sein.

+0

Apache VirtualHost hat etwas wie ProxyPass und ProxyPAssReverse, mit denen mehrere VirtualHosts mit Apache wie ein Router definiert werden können. Ich bin mir sicher, dass es für statische Domains funktioniert, nicht genau, ob es für das "Erstellen" von Domains funktioniert, wie in der Frage – Sathish

+0

erwähnt. Nun, Sie können sowieso keine Domain "erstellen" ... Sie müssen es registrieren. Als Teil der Registrierung zeigen Sie einfach auf die gleiche IP wie DomainA. Die VirtualHosts kümmern sich um den Rest, wenn Sie es richtig konfigurieren. – rmeador

+0

Vielen Dank für diesen Vorschlag, aber ich denke, wenn ich Virtualhosts verwende, muss ich die Dateien auf jeden FTP-Account dieser Website kopieren. Mein Ziel ist es mehrere Websites (Domains) zu betreiben und nur ein Konto mit Dateien zu verwalten. Alle Daten werden in einer Datenbank gespeichert, nicht in Dateien. – Digits

0

OK, hier ist ein wirklich einfaches Beispiel:

RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^www\.domainA\.com 
RewriteRule (.*) http://www.domainA.com/gateway.php?realpath=$1 [L,QSA] 

Sie könnten dann analysieren "realpath" in Ihrem Gateway-Skript parse_url und nehmen die entsprechenden Aktionen verwenden.

Sie könnten komplexere mit Rewrite-Regeln erhalten zu trennen diejenigen, für Bilder, etc. zu haben, wenn Sie

+0

Wenn Sie diese Umschreibungsregeln verwenden, wird die Adresse im Browser des Benutzers geändert? Tut es eine 301-Weiterleitung? Das wäre unerwünscht, denke ich. Ich würde hoffen, dass es alles intern innerhalb des Servers behandeln würde. Bitte beraten, ich bin sehr gespannt. –

+0

Ich denke, das könnte funktionieren! Ich habe etwas Ähnliches verwendet, aber ich wusste nicht, dass es über Domains hinweg verwendet werden kann. Ich werde es definitiv versuchen. Vielen Dank! – Digits

+0

@Josh - nein, es tut keine 301 Redirect (gut, es könnte, wenn Sie es wollten, aber wie geschrieben, würde es nicht). Es ist streng eine interne Weiterleitung. Der Browser sieht nie die neue URL –