2009-03-11 14 views
5

He estado buscando por un tiempo para encontrar una solución para lograr el siguiente sistema.Administrar varios sitios web desde un dominio

Me gustaría construir un sistema PHP en, digamos, domainA. En este dominio, permitiré que un administrador "cree" un nuevo sitio web. Este sitio web contiene solo fragmentos de texto, que están almacenados en una base de datos. Esto, sé cómo hacerlo.

Sin embargo, ahora me gustaría hacer posible que los visitantes que naveguen a domainB sean invisiblemente redirigidos a, por ejemplo, domainA.com/gateway.php?refdomain=domainB & page = xxx o algo similar. Tengo una vaga idea de que esto debe hacerse con .htaccess, pero realmente no sé cómo puedo hacer esto de la manera más fácil. Si, por ejemplo, hay algunas solicitudes POST o GET en el dominio B, esto debería seguir funcionando. También las imágenes vinculadas a http://www.domainB.com/test.gif deben cargarse de forma invisible desde www.domainA.com.

También sé que hay algunos sistemas CMS (por ejemplo, drupal) que permiten esta función, por lo que es posible, simplemente no sé cómo.

Gracias por cualquier consejo que me podría apuntar en la dirección correcta, Saludos cordiales, Dígitos

Respuesta

0

Básicamente, querrás apuntar todos tus dominios al mismo directorio (tal vez usando un comodín en tu vhosts) y luego configurar urlrewrite; mira this question para ver un ejemplo, y puede estar en un archivo .htaccess o en la configuración de Apache.

Todas las solicitudes que ingresen irán al mismo gateway.php y usted puede extraer el dominio actual y las solicitudes usando $_SERVER['REDIRECT_QUERY_STRING'], $_SERVER['REQUEST_URI'] y $ _SERVER['SERVER_NAME'] por ejemplo. Ver $_SERVER. Luego podrá en su gateway.php enviar los archivos correctos.

+0

Esto no cambiará la URL en la barra de direcciones del navegador, es transparente para el usuario. – lpfavreau

-1

podría utilizar el encabezado de redirección ..

0

Si utiliza un CMS como Drupal, usted debe ser capaz de asignar estos usando Portal Alias. Al usar el alias, podrá asignar diferentes dominios para apuntar a diferentes "sitios" que se creen.

+0

Creo que está tratando de evitar el uso de un CMS. –

2

¿Está alojando ambos en la misma máquina? Si es así, algo como VirtualHosts en Apache podría resolver esto por usted.

mod_alias y mod_rewrite también podría ser de alguna utilidad para usted.

+0

Apache VirtualHost tiene algo así como ProxyPass y ProxyPAssReverse que se puede utilizar para definir múltiples VirtualHosts con Apache actuando como un enrutador. Estoy seguro de que funciona para dominios estáticos, no estoy seguro de si funcionará para "crear" dominios como los mencionados en la pregunta – Sathish

+0

. Bueno, no puedes "crear" un dominio de todos modos ... debes registrarlo. Como parte del registro, simplemente apúntelo a la misma IP que domainA. Los VirtualHosts se encargarán del resto si lo configuras correctamente. – rmeador

+0

Gracias por esta sugerencia, sin embargo, creo que si uso Virtualhosts, tendré que copiar los archivos a cada cuenta ftp de ese sitio web. Mi objetivo es ejecutar varios sitios (dominios) y solo para mantener una cuenta con archivos. Todos los datos se almacenan en una base de datos, no en archivos. – Digits

0

OK, aquí hay un ejemplo muy simple:

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

A continuación, puede analizar "la ruta real" en su código de entrada utilizando parse_url y tomar las acciones apropiadas.

Usted podría conseguir más complejo, con sus reglas de reescritura de tener separados para imágenes, etc. si desea

+0

Cuando utiliza este tipo de reglas de reescritura, ¿realmente cambia la dirección en el navegador de los usuarios? ¿Hace un redireccionamiento 301? Eso sería indeseable, creo. Espero que lo maneje todo internamente en el servidor. Por favor avise, soy bastante curioso. –

+0

¡Creo que esto podría funcionar! Usé algo similar, pero no me di cuenta de que podría usarse en todos los dominios. Definitivamente intentaré esto. ¡Gracias! – Digits

+0

@Josh - no, no hace un redireccionamiento 301 (bueno, podría hacerlo si quisiera, pero como está escrito no lo haría). Es estrictamente un redireccionamiento interno. El navegador nunca ve la nueva URL –

Cuestiones relacionadas