وردپرس بدون شک یکی از محبوب ترین سیستم های مدیریت و محتوا می باشد که جایگاه خاص در بین وبمستر ها پیدا کرده است. وردپرس نهایت انعطاف پذیری و سادگی و همچنین امنیت را برای کاربران مهیا می نماید.
برخی از کاربران جهت امنیت هر چه بیشتر اطلاعات مبادله شده در وردپرس از SSL استفاده می کنند. خود وردپرس نیز برخی ویزگی های پیشفرض جهت انطباق پذیری با SSL در آن تعبیه شده که در صورت تشخیص فعال بودن SSL ؛ سایت را با آن هماهنگ می کند.
اما زمانی که از سیستم های reverse p**** xy همچون فایروال کلود پروتکشن استفاده می نمایید ممکن است وردپرس نتواند SSL را تشخیص دهد که این امر منجر به بروز مشکلاتی خواهد شد؛
دلیل این مشکل نیز این است که همچون تصویر زیر کاربرانتان با ارتباط امن SSL به سرور reverse متصل می شوند ولی ارتباط بین این سرور و سرور شما SSL نیست؛
>> هاست وردپرس
بنابراین وردپرس نمی تواند یک اتصال 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;
}
موفق و سربلند باشید.
با سلام
برای فعال سازی https نسخه فول در cloudflare چه کاری لازم است. آموزش لازم را نوشته اما انگلیسی . لطفا راهنمایی کنید. تشکر
HTTP Strict Transport Security (HSTS)
Enforce web security policy for your website.
https://api.cloudflare.com/#zone-settings-for-a-zone-get-security-header-setting
https://api.cloudflare.com/#zone-settings-for-a-zone-change-security-header-setting
SSL (with SPDY)
Encrypt communication to and from your website using SSL.
https://api.cloudflare.com/#zone-settings-for-a-zone-get-ssl-setting
https://api.cloudflare.com/#zone-settings-for-a-zone-change-ssl-setting