Как перенаправить поддомены на страницы учетной записи? Как работает маскировка домена? [закрытый]



Часть 1



Я хочу построить приложение PHP Zend Framework, которое пользователи смогут подписывать для использования. Когда они регистрируются, я бы хотел, чтобы приложение создало поддомен, который указывает на их публичную страницу, которая обслуживает контент, специфичный для этого клиента.



Например: http://mywebapp.com/username или http://username.mywebapp.com



Обновление: "использование поддоменов в качестве ключей учетной записи" - это хороший учебник, который в значительной степени ответил на мой вопрос. вопрос по этому поводу. Это включает в себя использование Zend_Controller_Router_Route_Hostname.



Однако я все еще сомневаюсь...

Вопрос №1: в учебнике не упоминается настройка поддомена с подстановочными знаками. Необходимо ли это для того, чтобы достичь этого? Есть ли способ обойти использование поддомена с подстановочными знаками?





Часть 2



Мне также нужно будет предложить пользователям возможность регистрировать доменные имена и указывать их на свою страницу. Так что если бы вы пошли в http://clientdomain.com , Ты будет видеть http://clientname.mywebapp.com , но вы никогда не сможете сказать, потому что url в адресной строке показывает http://client1.com . есть ли в этом смысл? Я думаю, что этот процесс называется маскировкой домена. Я в основном хочу предложить своим пользователям бесплатную маскировку домена.



Обновление: я только что открыл для себя мир API реселлера доменов. OpenSRS выглядит неплохо. Есть ли у вас кто-то, чтобы рекомендовать?



Вопрос №2: Как происходит маскировка домена работа? Может ли он работать с API реселлера домена?

765   3  

3 ответов:

Для части 1 вашего вопроса Вы можете реализовать любое из решений здесь - но я не уверен, что вам нужен маршрутизатор - вы не будете предлагать различные функции для каждого сайта - вы просто хотите загрузить различный контент на основе URL. Мы справляемся с этим довольно простым способом:

  1. по загрузке.php вам нужно захватить URL сервера
  2. Возьмите URL-адрес и удалите часть после http:// и до .mywebapp.com
  3. Найдите этот префикс в таблице базы данных и загрузите любой префикс. информация, необходимая вам о пользователе или другая информация, связанная с этим префиксом
  4. Поместите объект в Zend_Config, к которому вы можете получить доступ с любой страницы с деталями сайта (мы называем это siteinfo).
  5. Измените контроллеры или представления, чтобы они реагировали по-разному в зависимости от siteinfo-ie. изменение того, какие данные они извлекают и т. д.

Вам нужно будет изменить apache, чтобы справиться с этим - и самый простой способ - убедиться, что ваш домен по умолчанию (страницы, которые появляются, когда URL-адрес не распознано) устанавливается для вашего приложения.

Обработка изменений DNS не так проста - вам нужен DNS-сервер, который может обрабатывать ответы с подстановочными знаками.

Часть 2: Я думаю, что вы говорите, что если я введите URL-адрес http://grouchal.com, что это перенаправление http://grouchal.yourwebapp.com. Это потребует от меня, чтобы обновить существующий DNS-сервер записи grouchal.com так что ваш сервер не найден.

Если вы хотите увидеть хороший пример такой работы на практике вы должны настроить google apps для своей учетной записи домена. У меня есть URL-адреса, такие как mail.grouchal.com то, что когда-то набралось в стане mail.google.com/a/grouchal.com это потребовало, чтобы я установил grouchal.com DNS-сервер, чтобы указать на сервер google. Затем сервер google устанавливает редирект, чтобы изменить url-адрес на тот, который им нужен.

Возвращаясь к решению, которое я предложил выше, вы изменили бы его так, чтобы в дополнение к проверке префикса для вашего домена имя есть (то есть зачистка грушаля от http://grouchal.mywebapp.com ) он также будет искать альтернативные Домены. Так что если нет mywebapp.com в адресе то он будет искать в базе данных grouchal.com а затем установите siteinfo, используя эти данные.

Надеюсь, что это имеет смысл - проблемы, которые вы будете иметь, будут не в PHP, а в настройке вашего Wildcat DNS-сервера и получении ваших клиентов, чтобы настроить их DNS-серверы правильно. Удачи вам с проектом хотя.

Во-первых, вы не правы. Вам не нужно несколько экземпляров/установок вашего приложения. Настроить несколько виртуальных хостов в Apache, чтобы указать на корень док.

ServerName  www.serverOne.com
DocumentRoot "/htdocs/myapp/public"
SetEnv CONFIG_ENV "serverOne"   

ServerName www.serverTwo.com
DocumentRoot "/htdocs/myapp/public"    
SetEnv CONFIG_ENV "serverTwo"   

Поместите все ваши базовые url, пути и т. д. в разные разделы файла Zend_Config_Xml.

<?xml version="1.0" standalone="yes"?>
<config>
<siteOne>
   <base_url>http://www.siteOne.com</base_url>
       <image_path>/images/siteOne/</image_path>
       <database>
          <host>34.23.34.457</host>
          <name>siteOne_DB</name>
          <user>siteOne</user>
          <pass>**********</pass>
       </database>
    </siteOne>
    <siteTwo>
   <base_url>http://www.siteTwo.com</base_url>
       <image_path>/images/siteTwo/</image_path>
       <database>
          <host>34.23.34.456</host>
          <name>siteTwo_DB</name>
          <user>siteTwo</user>
          <pass>**********</pass>
       </database>
    </siteTwo>
</config>

Затем в вашем/public / индексе.php

<?php
require '../common/config/Bootstrap.php';
$bootstrap = new Bootstrap($_SERVER['CONFIG_ENV']);
$bootstrap->runApp();
?>

И в Bootstrap.метод PHP runApp ():

function runApp($env)
{
   $root   = realpath(dirname(__FILE__) . '/..');
   $config = new Zend_Config_Xml($root . '/config.xml', $env);

Это будет отлично работать с относительными ссылками, и это не требует никакого соответствия шаблону :)

Если у вас нет Загрузчик.php файл, вы можете узнать, как создать и использовать в книге Manning Press "Zend Framework In Action", доступной мгновенно в виде загрузки PDF. Это помогло мне пережить трудные времена.

Поскольку Zend Framework использует шаблон MVC, вы можете иметь отдельные модели и контроллеры, а затем различные представления для каждого домена.

После настройки представлений можно определить типизированный домен и показать правильные представления. Например, в вашем bootstrap вы можете определить домен следующим образом:

// Bootstrap or controller
$domain = array_reverse(split('[.]', $_SERVER['SERVER_NAME']));
$domain = $domain[1] . '.' . $domain[0];

// Store domain in registry
Zend_Registry::set('domain', $domain);


// Calling the view from the controller
$domain = Zend_Registry::get('domain');
$this->render($domain . 'home');

Это просто и идея!

Comments

    Ничего не найдено.