سلام مجدد،
نمیتونه به دو مسیر همزمان اشاره کنه!
خارج از برچسب VirtualHost مقادیر پیشفرضی هستند که غالباً با زدن 127.0.0.1 توسط آپاچی مد نظر قرار میگیرند. ولی زمانی که شما تعریف میکنید که با فلان پورت یا فلان IP یا فلان دامین، ریشه سایت فلان دایرکتوری باشه، خب دیگه کاری با دایرکتوری پیشفرض (مثلاً /var/www/html) نخواهد داشت و اون دایرکتوری ریشه خواهد شد که درون VirtualHost مربوطه تعریف شده.
یعنی به عبارت دیگه اگر خیلی ساده بخوایم بگیم، شما پیش خودت اینجوری استدلال کن که اولویت با قالبیه که توسط VirtualHost تعریف شده و در صورت موجود نبودن قالب، از مقادیر پیشفرضی که خارج از VirtualHost وجود دارند استفاده خواهد شد.
به عنوان یک مدیر سرور وقتی که معمولاً میخواهیم یک سرور اشتراکی راه اندازی کنه، واضحه که تعداد زیادی دامین داریم و یک IP ، خب! میایم کاری میکنیم که به صورت پیشفرض با زدن IP تنها، به یک دایرکتوری با یک پیغام مشخص و عمومی اشاره کنه و بعد با VirtualHost میایم میگیم اگر درخواست از طرف دامین خاصی بود دیگه به دایرکتوری پیشفرض اشاره نکن و برو به دایرکتوری دیگر.
یعنی یه چیزی تو مایه های کد زیر:
- کد: گزینش همه
ServerName localhost
DocumentRoot "/opt/lampp/public_html/"
Listen 80
<VirtualHost 192.168.0.1:80>
ServerName khuzestanlug.ir
DocumentRoot /home/khuzestanlug/public_html/
</VirtualHost>
<VirtualHost 192.168.0.1:80>
ServerName test.com
DocumentRoot /home/test/public_html/
</VirtualHost>
<VirtualHost 192.168.0.1:80>
ServerName nabi.ir
DocumentRoot /home/nabi/public_html/
</VirtualHost>
در این مثال، اتفاقی که میافته اینه که وقتی IP تنها وارد میشه به دایرکتوری /opt/lampp/public_html/ اشاره میشه، پس درون همین دایرکتوری یک فایل index قرار میدیم و توش هم یک پیغام عمومی قرار میدیم، مثلاً تبلیغ سرور خودمون!!
ولی درخواست هایی که با دامین khuzestanlug.ir انجام میشه به /home/khuzestanlug/public_html/ اشاره میکنه و دامین test.com به /home/test/public_html/ و nabi.ir به /home/nabi/public_html/ ، پس میبینید که همه چیز درست کار خواهد کرد
----
UserDir یک ماژول برای آپاچی هست. که با این دستور فعال میشه:
- کد: گزینش همه
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
و با استفاده از این دستور:
- کد: گزینش همه
UserDir public_html
تمام کاربران میتونن با ایجاد یک شاخه public_html درون دایرکتوری خانگی خودشون یک ریشه سایت داشته باشن و آدرس سایتشون هم شبیه این میشه:
- کد: گزینش همه
http://localhost/~user
یعنی در مورد کاربر test ، این میشه دایرکتوری ریشه سایتش:
- کد: گزینش همه
/home/test/public_html/
و این هم آدرس سایتش:
- کد: گزینش همه
http://localhost/~test
این ربطی به VirtualHost نداره و محدودتر هم هست، شاید برای اینترانت ها کاربرد داشته باشه.
موفق باشی
نبی