Nasıl rota sayfaları hesap sub-domain?

5 Cevap php

Part 1

Ben kullanıcıların kullanmak için üye olabilirsiniz PHP Zend Framework uygulama kurmak istiyorum. Kayıt sırasında, o müşteriye özel içerik kadar hizmet veren kamu sayfasına işaret eden bir alt etki alanı oluşturmak için uygulama istiyorum.

Örneğin,: http://mywebapp.com/username ya da http://username.mywebapp.com

Update: "Using sub-domains as account keys" hemen hemen bu bir sorumu yanıtladı iyi bir öğretici olduğunu. Bu Zend_Controller_Router_Route_Hostname kullanarak içerir.

Ancak, ben hala merak ediyorum ...

Question #1: öğretici bir joker alt etki alanı kurma söz etmez. Bu ulaşmak için gerekli midir? Bir joker subdomain kullanarak etrafında herhangi bir yolu var mı?


Part 2

Ben de kullanıcılara alan adlarını kayıt ve kendi sayfasına onları işaret olanağı sunmak gerekir. Yani http://clientdomain.com, sen http://clientname.mywebapp.com görmeye olacağını gitmek için, ama çünkü adres çubuğu gösterir url http://client1.com söylemek mümkün asla olsaydı . Bu mantıklı mı? Ben işlem maskeleme alanı denir düşünüyorum. Temelde benim kullanıcıların ücretsiz alan maskeleme sunmak istiyoruz.

Update: Ben sadece etki alanı satıcı API'leri dünya keşfetti ettik. OpenSRS güzel görünüyor. Size tavsiye bir tane var mı?

Question #2: nasıl etki işi maskeleme nedir? Bir etki alanı bayi API ile çalışabilir miyim?

5 Cevap

Sorunuzun Bölüm 1 için buradan çözümlerden birini uygulayabilirsiniz - ama bir yönlendirici gerekir emin değilim - her site için farklı işlevleri sunmaz - sadece URL göre farklı içerik yüklemek istiyorum. Biz oldukça basit bir şekilde bu işlemek:

  1. Lütfen bootstrap.php size sunucu URL kapmak gerekir
  2. URL almak ve http:// sonra önce kısmını şerit. Mywebapp.com
  3. Bir veritabanı tablosundaki bu önek arama ve bu öneki ile yapmak için kullanıcı veya diğer bilgileri hakkında için gereken herhangi bir bilgi yüklemek
  4. Eğer site bilgileri (biz bu siteinfo diyoruz) ile herhangi bir sayfadan erişebilirsiniz Zend_Config içine bir nesne koyun.
  5. - Yani siteinfo dayalı farklı yanıt denetleyicileri veya görünümleri değiştirebilirsiniz. Onlar vb almak hangi verileri değiştirmek

Bu işlemek için apache değiştirmek gerekir - ve en kolay yolu, varsayılan etki alanı (URL tanınan değilken gelip sayfa) uygulamanız için ayarlanmış olduğundan emin yapmaktır.

DNS değişiklikleri işleme o kadar kolay değil - joker cevap işleyebilir bir DNS sunucusu olması gerekir.

Part 2: I think you are saying that if I enter the URL http://grouchal.com that this would redirect to http://grouchal.yourwebapp.com. This would require me to update the existing DNS server entries for grouchal.com so that your server is found.

Eğer set-up gereken bir google apps etki alanı hesabınız için pratikte bu çalışma iyi bir örnek görmek istiyorsanız. Bir keresinde mail.google.com / a / grouchal.com haline yazdığınız mail.grouchal.com gibi adresler var. Bu bir google sunucuya işaret etmek grouchal.com DNS sunucusunu kurmak için bana gerekli. Google sunucusu daha sonra ihtiyaç duydukları birine url değiştirmek için yerinde bir yönlendirme koyar.

Lütfen sana yukarıda önerilen çözüm olacak değiştirmek istiyorsunuz böylece alan adı aynı zamanda alternatif alanları bakmak istiyorum (yani http://grouchal.mywebapp.com dan grouchal sıyırma) olduğu zaman için önek kontrol ek olarak. Adresi hiçbir mywebapp.com varsa Yani o veritabanında grouchal.com aramak ve daha sonra bu verileri kullanarak siteinfo ayarlarsınız.

Eğer sahip olacak sorunlar PHP ama kedisi DNS sunucusu kurma ve müşterilerin doğru kendi DNS sunucularını yapılandırmak için almak olmayacak - Umarım bu mantıklı. Olsa projesi ile iyi şanslar.

First, you are right. You don't want multiple instances/installs of your app. Setup multiple Apache virtual hosts to point at the Doc Root.

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

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

Bir Zend_Config_Xml dosyanın farklı bölümlerinde vb tüm baz adresler, yolları, koyun.

<?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>

Sonra / public / index.php

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

Ve bootstrap.php 'nin UygulamaÇalıştır () yöntemi:

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

Bu göreceli bağlantıları ile mükemmel çalışacak ve herhangi bir desen eşleştirme gerektirmez :)

Eğer bir bootstrap.php dosyası yoksa, size ve nasıl oluşturulacağını öğrenebilirsiniz Manning Press adlı "Zend Framework Hareket İçinde" kitabında, bir PDF download olarak anında kullanılabilir üzerinde kullanın. Bazı zor zamanlarımda bana yardımcı oldu.

Zend Framework MVC deseni kullanır gibi, tek bir model ve denetleyicileri ve her etki alanı için daha sonra farklı görüşlere sahip olabilir.

Özelleştirilmiş görüşlere sahip sonra, yazılı alanı algılar ve doğru görüşlerini gösterebilir. Örneğin, bootstrap size Domain Bu şekilde tespit edebilirsiniz:

// 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');

Bu sadece ve fikir!