PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : فعال کردن SSL وردپرس در سرویس های reverse p**** xy



yastheme
April 27th, 2015, 22:59
وردپرس بدون شک یکی از محبوب ترین سیستم های مدیریت و محتوا می باشد که جایگاه خاص در بین وبمستر ها پیدا کرده است. وردپرس نهایت انعطاف پذیری و سادگی و همچنین امنیت را برای کاربران مهیا می نماید.برخی از کاربران جهت امنیت هر چه بیشتر اطلاعات مبادله شده در وردپرس از SSL (http://central-hosting.com/blog/ssl-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F/) استفاده می کنند. خود وردپرس نیز برخی ویزگی های پیشفرض جهت انطباق پذیری با SSL در آن تعبیه شده که در صورت تشخیص فعال بودن SSL ؛ سایت را با آن هماهنگ می کند.اما زمانی که از سیستم های reverse p**** xy همچون فایروال کلود پروتکشن (http://central-hosting.com/blog/cloud-protection/) استفاده می نمایید ممکن است وردپرس نتواند SSL را تشخیص دهد که این امر منجر به بروز مشکلاتی خواهد شد؛
دلیل این مشکل نیز این است که همچون تصویر زیر کاربرانتان با ارتباط امن SSL به سرور reverse متصل می شوند ولی ارتباط بین این سرور و سرور شما SSL نیست؛http://central-hosting.com/blog/wp-content/uploads/2015/04/wordpress-ssl.png (http://central-hosting.com/blog/wp-content/uploads/2015/04/wordpress-ssl.png)
بنابراین وردپرس نمی تواند یک اتصال SSL را تشخیص دهد و ممکن است سایت به صورت کامل لود نشود و مرورگر ها از لود فایل هایی که با آدرس غیر https باشد خودداری می نمایند که این خود یک مشکل می باشد. همچنین در بخش ورود به مدیریت وردپرس نیز ممکن است با خطای redirect loop مواجه شوید.جهت حل این مشکل در سرویس های reverse باید یک تغییر کوچک در فایل function.php واقع در پوشه wp-include انجام شود.این تغییر در تابع is_ssl انجام می شود که وظیفه شناسایی یک ارتباط امن را دارد.شکل کلی تابع در این فایل بدین صورت است :
function is_ssl() {
if ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
} elseif (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
}
return false;
}
ما در تابع بالا یک elseif اضافه می کنیم تا شرایط جدیدی را نیز در شرط موجود تعبیه کنیم.
elseif (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
}

در نهایت شکل کلی تابع به صورت زیر تغییر می کند:

function is_ssl() {
if ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
} elseif (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
}
return false;
}

موفق و سربلند باشید.