كيف يكون CakePhP تسليم المحتوى على نطاق فرعي مختلف؟
-
27-09-2019 - |
سؤال
أقوم ببناء بوابة سيكون لها محتوى مختلف مدن ..
عندما يأتي شخص ما إلى موقع الويب ، أريده أن يختاروا المدينة ثم متابعة
ل
أو
هل يمكن القيام بذلك باستخدام قاعدة بيانات واحدة وتثبيت CakePhP؟
المحلول
انه من الممكن.
في الأساس في DNS ، عليك السماح *.site.com باستضافة جهاز واحد. بهذه الطريقة ، بغض النظر عن النطاق الفرعي الذي تكتبه ، سيكون الجهاز هو نفسه.
مثال على سجل DNS:
* A 10.0.0.1
ثم في إعلان المضيف الافتراضي عليك وضعه
<VirtualHost *>
DocumentRoot /var/www/path_to_site
ServerName site.com
ServerAlias www.site.com *.site.com
</VirtualHost>
بهذه الطريقة بغض النظر عن ما تكتبه ، سيتم إعادة توجيه موقع ea.site.com أو city.site.com إلى تطبيق واحد.
ثم عليك فقط تحليل المضيف من PHP (ويفضل أن يكون في AppController) وتحويل النطاق الفرعي إلى التصفية.
إنه مجردة بعض الشيء ، لكن هكذا سأفعل ذلك.
تحرير (الرد على التعليق):إنها مسألة كيفية بناء النظام. في الأساس إذا كان لديك:
cite1.site.com
في AppController الخاص بك ، يمكنك الحصول على شيء مثل:
class AppController extends Controller {
function beforeFilter(){
$host = explode('.', $_SERVER["HTTP_HOST"]);
$subdomain = $host[0];
Configure::write('city', $subdomain);
$this->City->getId($subdomain); //function in City model fetching City ID by city name
...
}
}
لذلك ، بعد ذلك يعتمد ذلك على هيكل التطبيق الخاص بك وكيف تتعامل مع هذه المدينة.