PDA

View Full Version : سوال: ساب دامین مجازی(داینامیک) برای سایت php



ghiravani
جمعه 04 اسفند 1391, 17:32 عصر
سلام دوستان.خسته نباشید

تصمیم دارم به اعضای سایت یک ساب دامنه مجازی بدم که وقتی وارد اون قسمت میشن، پنل کاربری خودشون رو ببینن

برای مثال آدرس سایت اصلی من به این صورت هست(البته به غیر از قسمت mysite :لبخند:) :
http://shop.mysite.com/
پنل کاربران در این آدرس هست (برای مثال کاربر ali) :
http://shop.mysite.com/user/index.php?id_user=ali
حالا می خوام وقتی کاربر آدرس http://ali.shop.mysite.com رو وارد کرد، بدون اینکه آدرس url تغییر کنه، اطلاعات پنل کاربریش نمایش داده بشه.

به همین منظور کارای زیر رو انجام دادم:
ابتدا به Cpanel سایتم رفتم و در قسمت Subdomains یه دامین به این صورت ایجاد کردم:
100419

سپس به قسمت مدیریت فایل ، شاخه mysite.com/shop رفتم و یه فایل .htaccess ساختم با این مقادیر:


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.shop\.mysite\.com$
RewriteCond %{HTTP_HOST} ^(.*)\.shop\.mysite\.com$
RewriteRule ^$ /user/index.php?id_user=%1 [P,L]


اما الان وقتی آدرس http://ali.shop.mysite.com میزنم، مرورگر خطا زیر رو میده:
Oops! Google Chrome could not find 123.shop.imia.ir

البته من سرور ندارم و هاست اشتراکی دارم.میتونه دلیلش این باشه؟؟
ممنون

mokha21
جمعه 04 اسفند 1391, 21:04 عصر
برای این کار شما باید حداقل سرور مجازی داشته باشید

ghiravani
جمعه 04 اسفند 1391, 21:24 عصر
برای این کار شما باید حداقل سرور مجازی داشته باشید

یعنی هیچ راهی نداره که این کار روی هاست اشتراکی انجام بشه؟؟ چون واقعا بهش نیاز دارم :افسرده: من از پشتیبانی ایران سرور که پرسیدم گفتن روی هاست های اشتراکی امکان wild card DNS رو میدن!

mokha21
جمعه 04 اسفند 1391, 21:38 عصر
یعنی هیچ راهی نداره که این کار روی هاست اشتراکی انجام بشه؟؟ چون واقعا بهش نیاز دارم :افسرده: من از پشتیبانی ایران سرور که پرسیدم گفتن روی هاست های اشتراکی امکان wild card DNS رو میدن!

برای ایجاد ساب دامین مجازی باید WildCard سرورتون فعال باشه.

mokha21
جمعه 04 اسفند 1391, 21:45 عصر
لینک (http://stackoverflow.com/questions/3455559/htaccess-mod-rewrite-how-to-create-virtual-subdomains) رو ببینید

afshin9032
جمعه 04 اسفند 1391, 23:20 عصر
می تونی این کار رو با modrewrite هم انجام بدی
محدودیتی از نظر سرور اشتراکی نداره

ghiravani
شنبه 05 اسفند 1391, 00:35 صبح
می تونی این کار رو با modrewrite هم انجام بدی
محدودیتی از نظر سرور اشتراکی نداره

ممنون میشم یه مثال بفرمایید

ghiravani
یک شنبه 06 اسفند 1391, 14:01 عصر
سلام.خسته نباشید

بالاخره مشکلم حل شد.

همون طور که گفته بودم سایت اصلی بنده در مسیری به شکل http://shop.mysite.com قرار داره.(یعنی ساب دامین shop مجازی نیست و از طریق Cpanel ساخته شده.)

به قسمت مدیریت فایل همین ساب دامین (/public_html/shop) میریم.سپس یک فایل .htaccess با مقدار زیر در این مسیر می سازیم:


RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.shop.mysite.com$
RewriteCond %{HTTP_HOST} ^(.*)\.shop.mysite.com$
RewriteRule ^$ /store/index.php?id_store=%1 [P,L]


در خط آخر این کد، store/index.php?id_store نوشته شده که یعنی در ساب دامین shop یا همون (/public_html/shop) ، یک پوشه با نام store وجود داره و داخل این پوشه فایل index.php هست.
حالا اگر کسی آدرس http://ali.shop.mysite.com رو وارد کنه ، با کمک .htaccess ، مقدار ali به فایل PHP در مسیر public_html/shop/store/index.php ارسال میشه و از طریق متد get ، مقدار ali به متغیر id_store داده میشه. سپس بدون اینکه آدرس url در مرورگر کاربر تغییر کنه ، حساب کاربری وی نمایش داده میشه.
یعنی نتیجه اجرای http://shop.mysite.com/store/index.php?id_store=ali از این پس با کمک http://ali.shop.mysite.com نمایش داده میشه.

اما لازمه که در Cpanel با توجه به شکل زیر ، به قسمت Subdomains رفته و یک ساب دامین با مقدار *.shop.mysite.com بسازیم.
http://barnamenevis.org/attachment.php?attachmentid=100419&d=1361543372

ممنون ;)

ghiravani
یک شنبه 06 اسفند 1391, 14:08 عصر
اما یک سوال دیگه :لبخند:

حالا تونستیم با کمک .htaccess ، ساب دامین مجازی بسازیم.اما اگر در سیستم های بلاگ دهی نظیر میهن بلاگ دیده باشید، میشه به هر بلاگ ، یک دامین متصل کرد.
مثلا دامین www.ali.ir رو به ساب دامین مجازی ali.shop.mysite.ir وصل کرد.

از دوستان عزیز کسی میدونه چجوری این کار انجام میشه؟؟
میشه این کارو روی هاست اشتراکی هم انجام داد؟؟
---
در انجمن هم 3 پست برای همین مشکل ارسال شده و بی جواب مونده:
پست 1: سوال در مورد اتصال دامنه واسه سیستم بلاگدهیم..خواهشا جواب بدین (http://barnamenevis.org/showthread.php?344136-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%AF%D8%A7%D9%85%D9%86%D9%87-%D9%88%D8%A7%D8%B3%D9%87-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%A8%D9%84%D8%A7%DA%AF%D8%AF%D9%87%DB%8C%D9%85.. %D8%AE%D9%88%D8%A7%D9%87%D8%B4%D8%A7-%D8%AC%D9%88%D8%A7%D8%A8-%D8%A8%D8%AF%DB%8C%D9%86&highlight=%D8%A7%D8%AA%D8%B5%D8%A7%D9%84+%D8%AF%D8 %A7%D9%85%DB%8C%D9%86+%D8%A8%D9%87+%D8%B3%D8%A7%D8 %A8+%D8%AF%D8%A7%D9%85%DB%8C%D9%86+%D9%85%D8%AC%D8 %A7%D8%B2%DB%8C)
پست 2: اتصال دامین به ساب دامین (http://barnamenevis.org/showthread.php?358519-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%AF%D8%A7%D9%85%DB%8C%D9%86-%D8%A8%D9%87-%D8%B3%D8%A7%D8%A8-%D8%AF%D8%A7%D9%85%DB%8C%D9%86&highlight=%D8%A7%D8%AA%D8%B5%D8%A7%D9%84+%D8%AF%D8 %A7%D9%85%DB%8C%D9%86+%D8%A8%D9%87+%D8%B3%D8%A7%D8 %A8+%D8%AF%D8%A7%D9%85%DB%8C%D9%86+%D9%85%D8%AC%D8 %A7%D8%B2%DB%8C)
پست 3: اتصال دامین به ساب دامین (http://barnamenevis.org/showthread.php?358519-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%AF%D8%A7%D9%85%DB%8C%D9%86-%D8%A8%D9%87-%D8%B3%D8%A7%D8%A8-%D8%AF%D8%A7%D9%85%DB%8C%D9%86&highlight=%D8%A7%D8%AA%D8%B5%D8%A7%D9%84+%D8%AF%D8 %A7%D9%85%DB%8C%D9%86+%D8%A8%D9%87+%D8%B3%D8%A7%D8 %A8+%D8%AF%D8%A7%D9%85%DB%8C%D9%86+%D9%85%D8%AC%D8 %A7%D8%B2%DB%8C)
---

ممنون

MMSHFE
دوشنبه 07 اسفند 1391, 12:06 عصر
فکر کنم عکس اون چیزی که شما تصور دارین، اتفاق میفته. یعنی اینکه دامین www.ali.ir به ساب دامین مجازی ali.shop.mysite.ir متصل میشه. این کار هم با تنظیم کردن DNSها توی دامین واقعی رخ میده. یعنی اینکه به شما یک DNS داده میشه که اون رو توی سایتتون ست کنید تا هروقت کسی سایت شما رو وارد کرد، محتوای ساب دامین مجازی نشون داده بشه.

ghiravani
دوشنبه 07 اسفند 1391, 13:14 عصر
فکر کنم عکس اون چیزی که شما تصور دارین، اتفاق میفته. یعنی اینکه دامین www.ali.ir به ساب دامین مجازی ali.shop.mysite.ir متصل میشه. این کار هم با تنظیم کردن DNSها توی دامین واقعی رخ میده. یعنی اینکه به شما یک DNS داده میشه که اون رو توی سایتتون ست کنید تا هروقت کسی سایت شما رو وارد کرد، محتوای ساب دامین مجازی نشون داده بشه.

سلام.ابتدا جا داره از استاد محترم (راستش اسم ایشون رو نمیدونم) جناب MMSHFE تشکر کنم که هر زمان بنده از ایشون درخواست کمک کردم ، بنده رو راهنمایی کردند. بازم ممنونم

اما یک سوالی برام پیش آمده! الان ساب دامین ali.shop.mysite.ir مجازی هست و اصلا در Cpanel ثبت نشده. اگر در DNS دامنه ali.ir ، آدرس ali.shop.mysite.ir رو ثبت کنیم ، مشکل حل میشه؟؟!!!!
چون سیستم های بلاگ دهی نظیر میهن بلاگ در قسمت "متصل كردن وبلاگ به دامين" نوشتن:


براي اتصال دامنه به وبلاگ ابتدا بايستي نام دامنه را توسط شرکتهاي ميزباني وب ثبت کنيد و سپس تنظميات زير را در قسمت DNS هاي دامنه خود قرار دهيد.
برای اتصال دامین به وبلاگ از یکی از حالات زیر استفاده نمایید:
تنظیم NAMESERVER) NS) به NS3.MIHANBLOG.COM و NS4.MIHANBLOG.COM
یا
تعریف رکورد CNAME به POINT.MIHANBLOG.COM


و حتی خود میهن بلاگ در یک فرم، خواسته تا آدرس دامینی که میخوایم به بلاگ متصل کنیم رو هم وارد کنیم! یعنی اگر در تنظیمات دامنه اصلی(ali.ir) قسمت DNS ، فقط یک آدرس (ali.shop.mysite.ir) رو وارد کنم مشکل حل میشه؟
ممنون

MMSHFE
دوشنبه 07 اسفند 1391, 13:52 عصر
علت اینکه از شما آدرس دامین رو خواستن هم همین مسئله هست تا توی اسکریپتشون با بررسی دامین (URI) ببینن درخواست از کدوم سایته و صفحه وبلاگ شما رو نشون بدن. CNAME هم که مستقیماً اسم ساب دامین رو میگیره و توی درخواست میفرسته و میهنبلاگ میتونه بفهمه اطلاعات کدوم وبلاگ رو باید نشون بده.

ghiravani
دوشنبه 07 اسفند 1391, 14:14 عصر
علت اینکه از شما آدرس دامین رو خواستن هم همین مسئله هست تا توی اسکریپتشون با بررسی دامین (URI) ببینن درخواست از کدوم سایته و صفحه وبلاگ شما رو نشون بدن. CNAME هم که مستقیماً اسم ساب دامین رو میگیره و توی درخواست میفرسته و میهنبلاگ میتونه بفهمه اطلاعات کدوم وبلاگ رو باید نشون بده.

من DNS دامین (مثلا) ali.ir رو در سایت nic.ir ، مقدار ali.shop.mysite.ir قرار دادم.اما وقتی در مرورگر ali.ir رو میزنم خطا This webpage is not available میده!
لازم نیست در اسکریپت سایت تغییری داده بشه تا سایت هم دامین متصل شده رو بشناسه؟؟
ممنون

MMSHFE
دوشنبه 07 اسفند 1391, 15:17 عصر
نه توی ساب دامین کاری نمیخواد انجام بدین بجز چک کردن URL که ببینید درخواست از چه آدرسی اومده.
اما اینکه پیغام خطا میده میدونه بخاطر دلایل زیر باشه:
1- تغییر DNS معمولاً چند ساعت تا یکی دو روز طول میکشه
2- ali.shop.mysite.ir معتبر نیست (مطمئن هستین که این دامین و ساب دامین وجود داره؟)

ghiravani
دوشنبه 07 اسفند 1391, 20:43 عصر
نه توی ساب دامین کاری نمیخواد انجام بدین بجز چک کردن URL که ببینید درخواست از چه آدرسی اومده.
اما اینکه پیغام خطا میده میدونه بخاطر دلایل زیر باشه:
1- تغییر DNS معمولاً چند ساعت تا یکی دو روز طول میکشه
2- ali.shop.mysite.ir معتبر نیست (مطمئن هستین که این دامین و ساب دامین وجود داره؟)

بجای mysite که آدرس اصل کاری رو فعلا ثبت کردم و صفحه کاربری ali هم موجود هست. اما برای ست شدن dns دامین اصلی ، باید یکم صبر کنم. نتیجه رو حتما در این تاپیک اعلام میکنم
ممنون

ghiravani
سه شنبه 08 اسفند 1391, 12:24 عصر
نه توی ساب دامین کاری نمیخواد انجام بدین بجز چک کردن URL که ببینید درخواست از چه آدرسی اومده.
اما اینکه پیغام خطا میده میدونه بخاطر دلایل زیر باشه:
1- تغییر DNS معمولاً چند ساعت تا یکی دو روز طول میکشه
2- ali.shop.mysite.ir معتبر نیست (مطمئن هستین که این دامین و ساب دامین وجود داره؟)

سلام.امروز دامین مورد نظر که dns اون تنظیم شده بود، ست شد.برای این دامین همون طور که قبلا گفته بودم، در قسمت dns مقدار ali.shop.mysite.ir ذخیره شده بود(البته بجای mysite و ali مقادیر واقعی ثبت شده بود.) اما الان که به دامین مراجعه میکنم پیام زیر نمایش داده میشه:


If you feel you have reached this page in error, please contact the web site owner:

webmaster@*****.ir
It may be possible to restore access to this site by following these instructions for clearing your dns cache.
If you are the web site owner, it is possible you have reached this page because:

The IP address has changed.
There has been a server misconfiguration.
The site may have been moved to a different server.
If you are the owner of this website and were not expecting to see this page, please contact your hosting provider.


فکر کنم فقط تنظیم کردن dns دامنه کافی نباشه و لازم باشه در اسکریپت سایت هم این دامنه معرفی بشه!درسته؟

ممنون

MMSHFE
سه شنبه 08 اسفند 1391, 12:35 عصر
همون تنظیم کردن DNS کافیه و توی دامین mysite.ir فقط باید دامینی که Request داده رو بررسی کنید تا بتونین تشخیص بدین که اطلاعات کدوم ساب دامین نشون داده بشه (مثلاً ali.shop.mysite.ir)
ضمناً توی DNS باید آدرس دامین رو بگذارین نه ساب دامین. ساب دامین که DNS نداره. کلاً روند کار اینطوریه:
1- توی تنظیمات DNS سایت ali.ir آدرس mysite.ir رو وارد کنید.
2- توی mysite.ir آدرس URI رو بررسی کنید.
3- برحسب آدرس URI توی دیتابیسی که دارین بگردین و ببینید اطلاعات کدوم ساب دامین باید بارگذاری بشه. مثلاً اگه URI برابر با http://www.ali.ir بود، باید اطلاعات ali.shop.mysite.ir رو بخونید و نشون بدین یا اگه http://www.reza.com بود باید اطلاعات reza.blog.mysite.ir رو بخونید و نشون بدین.
امیدوارم منظورم رو تونسته باشم برسونم.

ghiravani
سه شنبه 08 اسفند 1391, 14:27 عصر
همون تنظیم کردن DNS کافیه و توی دامین mysite.ir فقط باید دامینی که Request داده رو بررسی کنید تا بتونین تشخیص بدین که اطلاعات کدوم ساب دامین نشون داده بشه (مثلاً ali.shop.mysite.ir)
ضمناً توی DNS باید آدرس دامین رو بگذارین نه ساب دامین. ساب دامین که DNS نداره. کلاً روند کار اینطوریه:
1- توی تنظیمات DNS سایت ali.ir آدرس mysite.ir رو وارد کنید.
2- توی mysite.ir آدرس URI رو بررسی کنید.
3- برحسب آدرس URI توی دیتابیسی که دارین بگردین و ببینید اطلاعات کدوم ساب دامین باید بارگذاری بشه. مثلاً اگه URI برابر با http://www.ali.ir بود، باید اطلاعات ali.shop.mysite.ir رو بخونید و نشون بدین یا اگه http://www.reza.com بود باید اطلاعات reza.blog.mysite.ir رو بخونید و نشون بدین.
امیدوارم منظورم رو تونسته باشم برسونم.

ممنون از توضیحاتتون
من در فایل mysite.ir/index.php (البته بجای مقدار mysite مقدار اصلی قرار میگیره.) قطعه کد زیر رو اضافه کردم.


if($_SERVER["SERVER_NAME"] == "ali.ir")
{
echo '<meta http-equiv=Refresh content="1;url=http://ali.shop.mysite.ir"/>';
exit();
}
else if($_SERVER["SERVER_NAME"] == "reza.ir")
{
echo '<meta http-equiv=Refresh content="1;url=http://netq.shop.mysite.ir"/>';
exit();
}

البته بازم میگم بجای ali.ir و reza.ir دامین های اصلی رو قرار دادم :s
Dns هر دو دامین ir رو مقدار mysite.ir قرار ندادم. اما مقدار دو dns که شرکت میزبانی داده بود ثبت کردم اما الان وقتی به اون دو دامین مراجعه میکنم، باز هم همون خطای قبلی رو میده
اما وقتی در سی پنل این دو دامین رو پارک میکنم (park domain) مشکل حل میشه و صفحه کاربری نمایش داده میشه!!!
راهی نیست که برای هر دامین مجبور نباشم در سی پنل تغییرات بدم؟ :s
ممنون