دوستان عزیز سلام - مشکلی که بهش برخوردم که البته قبلا پرسیده بودم ولی تاپیکش قدیمی شد و خونده نشد سوالم -- سوالم اینه که بعد از راه اندازی دامنه مجازی دیگه نمیشه از localhost استفاده کرد - و با تایپ localhost به صفحه اولین دامنه مجازی که ایجاد کردم میرم و دیگه صفحه داشبورد رو برام نمیاره - و باید حتما دیگه از روش ایجاد دامنه مجازی استفاده کرد -
مثلا من دامنه مجازی به اسم php.exp دارم که براش دامنه مجازی ایجاد کردم
و یه فولدر کنارش به نام php.test دارم که در حالت عادی با ادرس localhost/php.test در دسترس بود ولی حالا بعد از اینکه دامنه مجازی برای php.exp ایجاد کردم دیگه مثلا با آدرس localhost/php.test بهش دسترسی ندارم --و حتما برای هر فولدری باید دوباره دامنه مجازی ایجاد کنم تا دسترسی بهم بده
Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
(یه نکته ای غیر ازسوالم این که معمولا سوال هایی که داخل تاپیک دوستان پیش میاد برای افراد و پرسیده میشه دیگه دیده نمیشن -- الان این سوال رو من دوبار در دوتاپیک پرسیدم و دیده نشده و مجبور شدم دوباره یه تاپیک براش بزنم )
ببینید قبل اینکه VirtualHost ای تعریف کنید، توو تنظیمات فایل httpd.conf داکیومنت روت پیشفرض تعریف شده:
DocumentRoot "C:/xampp/htdocs"
پس تمام درخواست ها این مسیرو باز میکنن.
اما وقتی VirtualHost ای تعریف میکنید، VirtualHost بعنوان دیفالت عمل خواهد کرد و سرور دنبال بهترین تطبیق از روی VirtualHost ها میگرده.
برای مثال شما VirtualHost ای به این شکل تعریف کردید:
<VirtualHost *:80>
ServerName php.exp
DocumentRoot c:/xampp/htdocs/php.exp
</VirtualHost>
وقتی در مرورگر آدرس php.exp/ رو وارد میکنید، با توجه به فایل Hosts، درخواستی به آیپی ۱۲۷.۰.۰.۱:۸۰ ارسال میشه که در هدر اون نام آدرس هم قرار داره(Host)، وقتی درخواست به سرور میرسه، با VirtualHost بالا مورد تطبیق قرار میگیرد و مسیر DocumentRoot باز میشود.
حالا شما فرض کنید آدرس php.test یا localhost رو وارد مرورگر میکنید، زمانی که درخواست به سرور میرسد، چون با هیچ ServerName و ServerAlias مطابقت ندارد، اولین VirtualHost از لیست VirtualHost ها(با توجه به آیپی و پورتی که داخل تگ VirtualHost مشخص شده) انتخاب میشود.
The default name-based vhost for an IP and port combination
If no matching ServerName or ServerAlias is found in the set of virtual hosts containing the most specific matching IP address and port combination, then the first listed virtual host that matches that will be used.
* قبلترش توضیح اومده، با توجه به آیپی و پورت مشخص شده، وقتی بیشتر از یک VirtualHost شد، اونوقته که ServerName و ServerAlias هاشون باهم مقایسه میشه!
نتیجه: شما یک VirtualHost با علامت * یعنی هر آیپی روی پورت ۸۰ ایجاد کردید، پس تمام درخواست ها با پورت ۸۰ به همین VirtualHost ختم میشه!!
با توجه به این توضیحات، اگر VirtualHost ای ایجاد کردید، باید برای هر ServerName یک VirtualHost ایجاد کنید.
برای localhost هم یک VirtualHost باید ایجاد کنید. بهتره ابتدای لیست قرار بدید.
فایل کانفیگ شما به این شکل در میاد:
<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/xampp/htdocs
</VirtualHost>
<VirtualHost *:80>
ServerName php.exp
DocumentRoot c:/xampp/htdocs/php.exp
</VirtualHost>
جزئیات رو میتونید در این مقاله بخونید.
سلام.
کد Virtual Host هاتونو بگذارید.
بله. بنظرم خوبه که نوتیفیکیشن واسه ردگیری تاپیک هایی که اشتراک داشتیم اگر پست جدید یا کامنتی اضافه شد متوجه بشیم و دیگری، بالااومدن تاپیک ها با آپدیت شدنش، این دو قابلیت اضافه بشه به سایت.
الان با این تنظیمات دامین php.exp رو دارم - ولی مشکل اینه که دیگه به صورت معمولبه پوشه دیگه ای اگر ایجاد کنم دسترسی ندارم و حتما باید دامنه براش بزنم دوباره -- و localhost رو هم که بزنم مستقیم وارد دامنه php.exp میشه
به عنوان مثال مثلا یه پوشه php.test هم ایجاد کردم که تا براش دامنه مجازی نزنم دسترسی بهش ندارم
ممنونم از راهنماییتون -درسته برای لوکال هاست هم اگر یک دامین مجازی ایجاد کنیم تقریبا مشکل حل میشه و میشه به بقیه فولدرها هم دسترسی داشت - مشکلی نداره برای ایجاد دامنه مجازی فقط ServerName , DocumenRoot رو بنویسیم ؟