contenido mandant auf mehreren domains?

phatbyte
Beiträge: 95
Registriert: Mi 2. Nov 2005, 14:05
Wohnort: Austria
Kontaktdaten:

contenido mandant auf mehreren domains?

Beitrag von phatbyte » Fr 20. Jan 2006, 15:19

hallo community

besteht die möglichkeit einen contenidomandant auf mehreren domains laufen zu lassen?

wenn ich jetzt contenido auf domain1 konfigurier und von domain2 darauf zugreife werden immer noch die urls von domain1 angezeigt - kann man das irgendwie regeln?

danke!

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: contenido mandant auf mehreren domains?

Beitrag von Dodger77 » Fr 20. Jan 2006, 15:21

phatbyte hat geschrieben:besteht die möglichkeit einen contenidomandant auf mehreren domains laufen zu lassen?

wenn ich jetzt contenido auf domain1 konfigurier und von domain2 darauf zugreife werden immer noch die urls von domain1 angezeigt - kann man das irgendwie regeln?
Contenido setzt automatisch einen BASE-Tag, der den Einstellungen beim Mandanten entspricht. Soweit ich das in den Snapshots gesehen habe, wird das aber in der nächsten Version einstellbar sein, ob der BASE-Tag gesetzt werden soll.

moltimer
Beiträge: 29
Registriert: Di 22. Nov 2005, 16:44
Wohnort: Ahrensburg
Kontaktdaten:

Beitrag von moltimer » Fr 20. Jan 2006, 15:23

Hallo phatbyte,

ich habe sowas nur mit Redirections bzw. Redirections in Frames hinbekommen. Also quasi nur verschleiert.

Gruß Moltimer
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1

phatbyte
Beiträge: 95
Registriert: Mi 2. Nov 2005, 14:05
Wohnort: Austria
Kontaktdaten:

Beitrag von phatbyte » Fr 20. Jan 2006, 15:27

ui das ist schlecht gibts denn keine anderen workarounds? könnte man sowas mit apache rewriten?

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Fr 20. Jan 2006, 15:34

ansatzweise könnte so ausschauen:

du definierst in den mandanteneinstellungen alternativ urls ...

danach musst du einen hack in der front_content.php setzen, und zwar dort wo der base tag gesetzt wird. dort schaust du nämlich nach wie der aktuelle HTTP_HOST lautet, über den diese domain erreicht wurde. danach suchst du in den cfgClient einstellungen nach den alternativ-namen und ob er vorkommt. wenn ja, dann soll er bitte diesen servernamen nehmen statt dem basis mandantenpfad.

habe kein script oder sowas da, aber das wäre die vorgehensweise.

phatbyte
Beiträge: 95
Registriert: Mi 2. Nov 2005, 14:05
Wohnort: Austria
Kontaktdaten:

Beitrag von phatbyte » Fr 20. Jan 2006, 15:35

oh sehr cool vielen dank!

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Fr 20. Jan 2006, 15:37

phatbyte hat geschrieben:ui das ist schlecht gibts denn keine anderen workarounds? könnte man sowas mit apache rewriten?
Probier mal aus in der "front_content.php" die Zeile 752 auszukommentieren, also statt:

Code: Alles auswählen

	$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);
so:

Code: Alles auswählen

	//$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);
Das funktioniert aber nur, wenn du nicht Module/Erweiterungen benutzt, die auf den BASE-Tag angewiesen sind.

phatbyte
Beiträge: 95
Registriert: Mi 2. Nov 2005, 14:05
Wohnort: Austria
Kontaktdaten:

Beitrag von phatbyte » Fr 20. Jan 2006, 15:43

sieht so aus als obs klappt!

vielen dank!

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Fr 20. Jan 2006, 23:56

so, ich habe das ganze mal so umgesetzt, dass man das auch verwenden kann, wenn man mehere domains drauf verweisen hat UND den base tag benötigt (z.b. wenn man meine mod rewrite erweiterung nutzt)

front_content.php öffnen, suche der stelle (zeile 746):

Code: Alles auswählen

	$is_XHTML = getEffectiveSetting('generator', 'xhtml', false);
	if ($is_XHTML == true) {
		$baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'" />';
	} else {
		$baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'">';
	}
	$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);
und ersetzen durch dieses snippet:

Code: Alles auswählen

	// edit by stese - ModRewrite multi domain hack
	// resolves additional frontend_paths and check if
	// current host is defined as additional frontendpath 
	// if true, use new frontendpath for base tag
	// if false, use default client html path for  base tag
	$str_new_htmlpath = $cfgClient[$client]["path"]["htmlpath"];
	
	cInclude('classes', 'contenido/class.client.php');
   $oClient = new cApiClient($client);
	$arr_settings = $oClient->getProperties();
   
	foreach ($arr_settings as $arr_client) {
	   if ( $arr_client["type"] == "client" && strstr($arr_client["name"],"frontend_path") !== false ) {
	      $arr_urlsettings = parse_url($arr_client["value"]);
	      
	      if ($arr_urlsettings["host"] == $_SERVER['HTTP_HOST'] || ("www." . $arr_urlsettings["host"] ) == $_SERVER['HTTP_HOST'] || $arr_urlsettings["host"]  ==  "www." . $_SERVER['HTTP_HOST'] ) {
	         $str_new_htmlpath = $arr_client["value"];
	      }
	      
	   }
	}
	$is_XHTML = getEffectiveSetting('generator', 'xhtml', false);
	if ($is_XHTML == true) {
		$baseCode = '<base href="'.$str_new_htmlpath.'" />';
	} else {
		$baseCode = '<base href="'.$str_new_htmlpath.'">';
	}
	$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);
	
	// end edit
danach kann man in den mandanten einstellungen die verschiedenen domain-frontend-html paths wie folgt setzen:

type: client
name: frontend_path[n]
(also die [n] ist numerisch und kann ab 1 hochgezählt werden, wenn man 5 verschiedene domains hat kann man die namen z.b. frontend_path1, frontend_path3, frontend_path7 etc. nutzen)
value: http://www.domain.de/cms/
(also das was in den base tag geschrieben wird, also im klartext: zusätzliche urls die in den mandanten eigenschaften im feld "Web-Addresse" gesetzt werden können. wichtig hierbei: immer mit dem mandantenverzeichnis setzen!)

conradius
Beiträge: 168
Registriert: Di 19. Jul 2005, 11:52
Wohnort: Wabern (Bern/CH)
Kontaktdaten:

Beitrag von conradius » Di 1. Jan 2008, 18:38

dieser Thread ist zwar schon etwas angestaubt, ich hatte aber trotzdem damit zu tun.
Ich verwende die 4.6.23mr_v0.3 und habe 3 verschiedene Domains für einen Mandanten.

Ich finde Dein Vorschlag super stese, ich habe ihn aber verkürzt eingebaut. Und zwar nach der Zeile

Code: Alles auswählen

$str_base_uri = $cfgClient[$client]["path"]["htmlpath"];
nur diesen Block hinzugefügt:

Code: Alles auswählen

// edit by stese - ModRewrite multi domain hack
// resolves additional frontend_paths and check if
// current host is defined as additional frontendpath
// if true, use new frontendpath for base tag
// if false, use default client html path for  base tag
//$str_base_uri = $cfgClient[$client]["path"]["htmlpath"];

cInclude('classes', 'contenido/class.client.php');
$oClient = new cApiClient($client);
$arr_settings = $oClient->getProperties();

foreach ($arr_settings as $arr_client) {
  if ( $arr_client["type"] == "client" && strstr($arr_client["name"],"frontend_path") !== false ) {
	 $arr_urlsettings = parse_url($arr_client["value"]);

	 if ($arr_urlsettings["host"] == $_SERVER['HTTP_HOST'] || ("www." . $arr_urlsettings["host"] ) == $_SERVER['HTTP_HOST'] || $arr_urlsettings["host"]  ==  "www." . $_SERVER['HTTP_HOST'] ) {
		$str_base_uri = $arr_client["value"];
	 }

  }
}
// end edit
Der Vorteil davon ist, dass man nichts ersetzen, sondern nur hinzufügen muss... naja. :) (hab einfach den Variabel-Name "str_new_htmlpath" bei "str_base_uri" belassen, wie in der original front_content.php.)

Dies wie gesagt bei einer 4.6.23er mit mr v0.3.

Gibt es eventuell schon andere Lösungsansätze, die schon drin sind, ich aber nur noch nichts davon weiss?? :oops:

However, so klappt's super.
Gruss
Conradius

Hammy
Beiträge: 26
Registriert: Sa 26. Jan 2008, 23:32
Kontaktdaten:

Beitrag von Hammy » Di 20. Mai 2008, 23:59

Hallo,

ich benutze auch 4.6.23mr_v0.3, doch auch nach dem Einfügen der Zeilen bekomme ich immer nur Error 404 - Not found.

Ich habe in den Mandanteneinstellungen folgendes:
client frontend_path1 http://www.domain2.de/cms/
client frontend_path2 http://www.domains1.de/cms/

Habt ihr eine Idee, woran es liegen könnte?

Ich habe übrigens den Weg von Conradius befolgt.

conradius
Beiträge: 168
Registriert: Di 19. Jul 2005, 11:52
Wohnort: Wabern (Bern/CH)
Kontaktdaten:

Beitrag von conradius » Mi 21. Mai 2008, 08:30

hey Hammy,

probiers mal aus ohne "cms/", also:

Code: Alles auswählen

client frontend_path1 http://www.domain2.de/
client frontend_path2 http://www.domains1.de/
schliesslich hast Du ja mr aktiviert und schreibst wohl das "cms/" nicht in Deiner url.

Gruss
Conradius

baumpaul
Beiträge: 346
Registriert: Mo 1. Mär 2004, 12:59
Kontaktdaten:

Beitrag von baumpaul » Di 27. Mai 2008, 07:10

Hallo,

bei Version 4.6.15 funktioniert es, aber in der Version 4.6.23 leider nicht. Endweder ich habe etwas übersehen oder dort ist etwas anders. Kann sich das jemand anders noch einmal anschauen?

conradius
Beiträge: 168
Registriert: Di 19. Jul 2005, 11:52
Wohnort: Wabern (Bern/CH)
Kontaktdaten:

Beitrag von conradius » Mi 28. Mai 2008, 10:24

hallo baumpaul,

ich habe eine Installation mit 4.6.23 am Laufen, inkl. mehrer Domains. Das funktioniert!

Hast Du noch mehr Infos zu Deinem Problem?

Gruss
Conradius

BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Beitrag von BagHira » Di 16. Sep 2008, 18:12

conradius hat geschrieben:ich habe eine Installation mit 4.6.23 am Laufen, inkl. mehrer Domains. Das funktioniert!
Hallo,
funktioniert das snippet auch in einer 4.8.8, hat das schon einer am laufen?

Späte Rückmeldung, aber es funktioniert (getestet http://forum.contenido.org/viewtopic.ph ... 543#111543) mit einer 4.8.8 ohne Probleme.
Zuletzt geändert von BagHira am Sa 25. Okt 2008, 17:59, insgesamt 1-mal geändert.
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+

Gesperrt