كيف أجعل Apache يعرف دليل التطبيق الذي سيتم استخدامه في المجالات المختلفة؟
-
06-07-2019 - |
سؤال
أحاول إنشاء موقع باستخدام CodeIgniter.سيكون لدي نطاقات متعددة يتم تقديمها من هذا الخادم، وما أحاول القيام به هو فصل طلبات HTTP لـ www.example1.com عن تلك الخاصة بـ www.example2.com ثم إعادة توجيهها إلى مجلدات التطبيق الصحيحة.
لنفترض أن هذا هو هيكل الدليل الخاص بي:
- نظام
- طلب
- مثال 1
- example2
- طلب
لذلك هذا الطلب
www.example1.com/gallery/
سيتم بعد ذلك إعادة توجيهك إلى المجلد exmaple1.
هل لدى أي شخص أي مثال رمز للقيام بذلك؟من الواضح أنك ستحتاج إلى استخدام وحدة ReWrite ...
لقد بحثت حول وثائق Apache ولكن لم أتمكن من الوصول إلى أي مكان.اسمحوا لي أن أعرف إذا كنت بحاجة إلى مزيد من المعلومات حول هذا الموضوع.
المحلول
يعد استخدام VirtualHost (والاسم المستعار، وإعادة الكتابة) هي الإجابات الأساسية، ولكن إذا كنت تعتقد أنك ستضيف/تزيل مضيفين آخرين باستخدام نفس الإعداد، فسوف أفكر في mod_macro وحدة.هذه وحدة طرف ثالث ستساعدك على تبسيط تكوين Apache وتجنب أخطاء النسخ/اللصق.
مثال بسيط مع التخطيط الخاص بك، حدد ما يلي:
<Macro vh80 name>
<VirtualHost *:80>
DocumentRoot /system/application/$name
ServerName www.$name.com
CustomLog /system/application/$name/logs/access.log virtcommon
ErrorLog /system/application/$name/logs/error.log
</VirtualHost>
</Macro>
وبعد ذلك عند تمكين موقع ما، استخدم التوجيه التالي:
استخدم مثال vh801
والذي سيقوم بإعداد www.example1.com لاستخدام الدليل الذي تم تكوينه كجذر بالإضافة إلى دليل التسجيل الذي تم تكوينه.
نصائح أخرى
ما تحتاجه يسمى استضافة افتراضية لجعل www.example1.com وwww.exaplme2.com يشيران إلى مجلد مختلف في نظام الملفات الخاص بك.
إذا كنت ترغب بالإضافة إلى ذلك في الحصول على مسار مختلف في URI لخدمة المحتوى الرئيسي، فلديك بدائل مختلفة:
أنشئ المجلد فعليًا ولا تقم بإجراء أي تغييرات أخرى
أنشئ رابطًا فعليًا (معرض مسمى يشير إلى المجلد الجذر للمضيف الظاهري الرئيسي) إلى المجلد واستخدم ملف اتبعSymLinks خيار VirtualHost
استخدم الاسم المستعار التوجيه في VirtualHost
Alias /gallery /
استخدم mod_rewrite
RewriteRule /gallery/(.*) /$1 [QSA]
سيكون الخيار الأبسط (إذا سمح CodeIgniter) هو الخيار 1 أو 2.
مقتطف من وثائق VirtualHost:
Running several name-based web sites on a single IP address. Your server has a single IP address, and multiple aliases (CNAMES) point to this machine in DNS. You want to run a web server for www.example.com and www.example.org on this machine. Note Creating virtual host configurations on your Apache server does not magically cause DNS entries to be created for those host names. You must have the names in DNS, resolving to your IP address, or nobody else will be able to see your web site. You can put entries in your hosts file for local testing, but that will work only from the machine with those hosts entries. Server configuration # Ensure that Apache listens on port 80 Listen 80 # Listen for virtual host requests on all IP addresses NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/example1 ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot /www/example2 ServerName www.example.org # Other directives here </VirtualHost> The asterisks match all addresses, so the main server serves no requests. Due to the fact that www.example.com is first in the configuration file, it has the highest priority and can be seen as the default or primary server. That means that if a request is received that does not match one of the specified ServerName directives, it will be served by this first VirtualHost.
هذا في الواقع سؤالان:
كيفية جعل www.example1.com وwww.example2.com مختلفين؟الجواب على هذا هو استضافة افتراضية التوجيه.
كيفية جعل/المعرض يشير إلى المثال 1؟يتم ذلك باستخدام توجيه الاسم المستعار.