كيف الطريق النطاقات الفرعية إلى الحساب الصفحات ؟ كيف اخفاء مجال العمل ؟ [مغلقة]

StackOverflow https://stackoverflow.com/questions/822100

سؤال

الجزء 1

أريد بناء PHP زند إطار تطبيق التي يمكن للمستخدمين الاشتراك للاستخدام.عند التسجيل ، أود تطبيق لإنشاء المجال الفرعي الذي يشير إلى الصفحة العامة ، أن يقدم محتوى محددة إلى أن العميل.

على سبيل المثال: 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.هل هذا منطقي ؟ أعتقد أن ما يسمى عملية اخفاء مجال.أنا في الأساس نريد أن نقدم للمستخدمين مجانا المجال اخفاء.

تحديث: لقد اكتشف عالم التجزئة المجال واجهات برمجة التطبيقات. OpenSRS تبدو لطيفة.هل لديك أحد أن يوصي ؟

السؤال رقم 2: كيف اخفاء مجال العمل ؟ يمكن أن تعمل مع المجال موزع API ؟

هل كانت مفيدة؟

المحلول

جزء 1 من سؤالك يمكنك تنفيذ أي من الحلول هنا - ولكن أنا لست متأكدا مما كنت في حاجة الى جهاز التوجيه سوف لا تقدم وظائف مختلفة لكل موقع - أنت فقط تريد أن تصل حمولة مختلفة من المحتوى استنادا إلى عنوان URL.علينا التعامل مع هذا في طريقة بسيطة:

  1. في bootstrap.php تحتاج إلى الاستيلاء على الخادم URL
  2. اتخاذ URL قطاع من جزء بعد http:// قبل .mywebapp.com
  3. بحث هذه البادئة في جدول قاعدة البيانات وتحميل أي المعلومات التي تحتاجها حول المستخدم أو معلومات أخرى أن تفعل مع هذه البادئة
  4. وضع كائن في Zend_Config التي يمكنك ثم الوصول إليها من أي صفحة تفاصيل الموقع (نحن نسمي هذا siteinfo).
  5. تعديل وحدات التحكم الخاصة بك أو آراء للرد بشكل مختلف استنادا إلى siteinfo - أي.تغيير البيانات استرداد الخ

سوف تحتاج إلى تعديل أباتشي للتعامل مع هذا - و أسهل طريقة للتأكد من المجال الافتراضي (الصفحات التي تأتي عندما URL غير المعترف بها) تم تعيين التطبيق الخاص بك.

التعامل مع التغييرات DNS ليس من السهل - تحتاج إلى أن يكون ملقم DNS التي يمكن التعامل مع البدل الردود.

الجزء 2: أعتقد أنت تقول أنه إذا أدخل عنوان URL http://grouchal.com أن هذا من شأنه إعادة توجيه إلى http://grouchal.yourwebapp.com.وهذا يتطلب مني تحديث القائمة ملقم DNS إدخالات grouchal.com حتى أن الخادم الخاص بك هو العثور عليها.

إذا كنت تريد أن ترى مثال جيد على هذا العمل في الممارسة العملية يجب عليك انشاء حساب google apps for حساب المجال الخاص بك.لدي عناوين مثل mail.grouchal.com أنه بمجرد كتابتها في أن تصبح mail.google.com/a/grouchal.com.هذا مطلوب مني إعداد grouchal.com ملقم DNS للإشارة إلى ملقم جوجل.خادم google ثم يضع الكمبيوتر في مكان لتغيير عنوان url واحد يحتاجونه.

العودة إلى الحل أنا المقترحة أعلاه يمكنك تعديله بحيث بالإضافة إلى التحقق من البادئة عند اسم المجال الخاص بك هو هناك (أي تجريد من grouchal من http://grouchal.mywebapp.com) فإنه أيضا البحث عن بديل المجالات.لذلك إذا لم يكن هناك mywebapp.com في العنوان ثم سوف ابحث في قاعدة البيانات grouchal.com ثم تعيين siteinfo استخدام تلك البيانات.

نأمل أن يكون هذا منطقي - المشاكل التي سوف لن تكون في PHP ولكن في إعداد العشوائية DNS server و الحصول على الزبائن تكوين ملقمات DNS بشكل صحيح.حظا سعيدا مع هذا المشروع على الرغم من.

نصائح أخرى

أولا, أنت على حق.كنت لا تريد مثيلات متعددة/تثبيت التطبيق الخاص بك.الإعداد متعددة أباتشي المضيفين الظاهري إلى نقطة في دكتور الجذر.

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

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

وضع كل ما تبذلونه من قاعدة عناوين, مسارات, الخ في أقسام مختلفة من 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/index.php

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

و في Bootstrap.php's runApp() الطريقة:

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

هذا وسوف تعمل تماما مع الروابط النسبية, وأنها لا تتطلب أي نمط مطابقة :)

إذا كنت لا تملك Bootstrap.php ملفات, يمكنك أن تتعلم كيفية إنشاء و استخدام في مانينغ الصحافة "الإطار زند في العمل" الكتاب متاح على الفور كملف PDF تحميل.لقد ساعدني من خلال بعض الأوقات الصعبة.

كما زند إطار يستخدم نمط MVC, هل يمكن أن يكون واحد من النماذج التحكم ثم وجهات نظر مختلفة لكل مجال.

بعد تخصيص وجهات النظر ، يمكنك الكشف عن كتابتها المجال وإظهار وجهات النظر الصحيح.على سبيل المثال ، في التمهيد يمكنك الكشف عن المجال بهذه الطريقة:

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

انها مجرد فكرة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top