من بعضی از تنظیمات سایتم بر اساس این دوتا متغیر هستن. البته بیشتر از server_name استفاده می کنم. بنظرتون بهتر نیست که http_hostرو حذف کنم و بر اساس server_name کار کنم؟سلام
http_host مقدارش از header درخواستی که از طرف کاربر میاد، مشخص میشه ولی server_name مقداری هست که توی کانفیگ سرور تعریف شده.
اینکه کدوم یکیشون اولش همیشه www هست، هیچ کلیتی نداره و نمیشه گفت که این اینطور هست (یا نیست!)
پیشنهاد میکنم که از server_name استفاده کنید، چون مواردی که تنظیمات سرور انجام نشده و .. خیلی محدود و نادر هست.
اگر هم می خواین که www همیشه باشه(یا برعکس) از http_host + مقداری کدنویسی توی htaccess استفاده کنید یا اینکه درخواست بدین توی سرور، server_name رو مطابق میل شما تغییر بدن (همون اولی بهتره!)
موفق باشید
با استفاده از آی پی سرور به سایت دسترسی پیدا می کنن، کاربر می تونه آی پی رو نگه داره و http_host رو عوض کنه.این مطلب درسته؟گفتم خدمتتون که بهتره از server_name استفاده کنید، البته به این راحتی هم که شما می گین کاربر نمی تونه header رو تغییر بده و همچنان به سایت شما برسه!!
همون از server_name استفاده کنید.
پیروز باشید
منظورم این نبود.خب اگه با آی پی وارد سایت بشه، مقدار server[http_host]l_$ برابر همون آی پی هست، که هیچ ایرادی هم نداره و خطری هم کسی و تهدید نمی کنه(!)
http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html#sec14.23
موفق باشید
خب خیلی از سایتها هم با www باز می شن و هم بدون www، چرا این اتفاق میافته؟متغیر SERVER_NAME یا HTTP_HOST هر دو اگر در لوکال باشن چون www نداره و مربوط به وب نمیشه پس www اول خروجیشو وجود نداره ولی در سرور هر دو www دارن. احتمالاً فراموش کردید. www مختص صفحات وب هست فقط ! لوکال (آفلاین) مربوط به سیستم عامل میشه.
چون وارد کردن www الزامی نیست. مثل این می مونه که شما هم میتونی بنویسی false و هم FALSE . ولی کدوم صحیح تره؟ قاعده برنامه نویسی داریم که میگن FALSE درسته چون یک کانستنت هست.خب خیلی از سایتها هم با www باز می شن و هم بدون www، چرا این اتفاق میافته؟
چون وارد کردن www الزامی نیست. مثل این می مونه که شما هم میتونی بنویسی false و هم FALSE . ولی کدوم صحیح تره؟ قاعده برنامه نویسی داریم که میگن FALSE درسته چون یک کانستنت هست.
توی مطلب بالا گفتید که توی سرور www هست ولی الان می گید دلخواهیه.متغیر SERVER_NAME یا HTTP_HOST هر دو اگر در لوکال باشن چون www نداره و مربوط به وب نمیشه پس www اول خروجیشو وجود نداره ولی در سرور هر دو www دارن. احتمالاً فراموش کردید. www مختص صفحات وب هست فقط ! لوکال (آفلاین) مربوط به سیستم عامل میشه.
اون دو تا ربطی به هم ندارن. شما فرمودید روی لوکال و سرور آیا www به ما میده متغیر SERVER_NAME و HTTP_HOST یا نه. من گفتم رو لوکال نه ولی رو سرور آره. به این دلیل که سرور تحت وب هست ولی لوکال تحت سیستم عامل.توی مطلب بالا گفتید که توی سرور www هست ولی الان می گید دلخواهیه.
آخرش کدوم یکی درسته؟
شما در مورد این مطلب اطلاعی ندارید؟اون دو تا ربطی به هم ندارن. شما فرمودید روی لوکال و سرور آیا www به ما میده متغیر server_name و http_host یا نه. من گفتم رو لوکال نه ولی رو سرور آره. به این دلیل که سرور تحت وب هست ولی لوکال تحت سیستم عامل.
بعد فرمودید چرا بعضی از سایت ها با www باز میشن و بعضی ها هم نه و بعضی ها هم با هردو. خب این رو میشه با apache محدود کرد. چه با www و چه بدون www در آدرس بار بخوایم آدرس یک وبسایت رو وارد کنیم ، باز هر دو متغیر ذکر شده به ما با www نشان میدن. یه نگاهی هم به توصیه های گوگل بندازید. مورد با www و بدون www یکی از مسائل مهم مربوط به بهینه سازی میشه.
یه امتحان کوچیک هم روی لوکال کنید. شما localhost رو با www باز کنید. میبینید که خطا دریافت می کنید چون همچین دامنه ای وجود نداره. پس وارد کردن www برای وبسایت ها هست نه لوکال هاست.
در کل سیستم کار این دو متغیر اینطوریه که قبل از نمایش خروجی به بررسی می کنن که هدری که ارسال میشه از طرف سرور هست یا نه هاست مجازی یا همون لوکال هاست.
کاربر می تونه با استفاده از برنامه های موجود با استفاده از آی پی وارد سایت من بشه ولی مقدار http_host رو تغییر بده.
با توجه به اینکه من برای ارسال ایمیل توی برنامه هام از http_host استفاده می کنم، ممکنه آدرس فرستنده ایمیهایی که ارسال می کنم تغییر کنه. بنظرتون چکارباید کرد؟
سرور مقادیر http_host و server_name رو ارسال می کنه. فکر نکنم کاربر حتی خود شما که دسترسی به پنل مدیریت دارید بتونید همچین کاری کنید. اما مطمئن نیستم در مورد اینی که گفتم. بنظر خودم که اینطوریه.شما در مورد این مطلب اطلاعی ندارید؟
به گفته دوست عزیزمون Domanjiri توجه کنید:سرور مقادیر http_host و server_name رو ارسال می کنه. فکر نکنم کاربر حتی خود شما که دسترسی به پنل مدیریت دارید بتونید همچین کاری کنید. اما مطمئن نیستم در مورد اینی که گفتم. بنظر خودم که اینطوریه.
HTTP_HOST مقدارش از HEADER درخواستی که از طرف کاربر میاد، مشخص میشه ولی SERVER_NAME مقداری هست که توی کانفیگ سرور تعریف شده.
و در مورد HTTP_HOSTThe name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host.
Contents of the Host: header from the current request, if there is one.