Помогите немного поправить скрипт с nofollow

alexz15

Постоялец
Регистрация
3 Окт 2008
Сообщения
394
Реакции
194
Приветствую! Есть скрипт:
PHP:
if(eregi($_SERVER['SERVER_NAME'],$url))return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
 else return '<noindex><a href="'.$url.'" target="_blank" rel="nofollow">'.$text.'</a></noindex>';
Если была указана ссылка на чужой сайт, то она становится nofollow.
Как сделать, чтобы ссылка не была nofollow для поддоменов своего сайта?
 
Надо просто указать домен в явной форме
PHP:
 if(eregi('site.ru',$url))return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
 else return '<noindex><a href="'.$url.'" target="_blank" rel="nofollow">'.$text.'</a></noindex>';
 
Если это используется только на основном домене, то лучше так:
PHP:
if ( stripos( $url, $_SERVER['SERVER_NAME'] ) !== false ) {
// совпало
} else {
// не совпало
}
 
Если это используется только на основном домене, то лучше так:
PHP:
if ( stripos( $url, $_SERVER['SERVER_NAME'] ) !== 0 ) {
// совпало
} else {
// не совпало
}
так автор просит чтобы не была nofollow для поддоменов своего сайта) Тем более код ваш работать не будет. Обратите внимание на то, что возвращает strpos и знак эквиваленции.

eregi использовать лучше ненадо.
2 варианта-
1. Сделать переменную (или очень часто в движках она определена) где прописать основной домен явно

PHP:
$SITE_DOMEN = 'mysite.com';
....
if ( stripos( $url, $SITE_DOMEN ) !== false ) {
// совпало
} else {
// не совпало
}

2 - если это сложно и лень делать (много сайтов ) можно сделать так
PHP:
$s = explode('.', $_SERVER['SERVER_NAME']);
 $SITE_DOMEN = $s[count($s)-2].'.'. $s[count($s)-1];
 
Я имею в виду, чтобы nofollow'a не было и для основного домена mysite.com, и для поддоменов sub1.mysite.com, sub2.mysite.com и тд., а только для чужих сайтов.
 
Я имею в виду, чтобы nofollow'a не было и для основного домена mysite.com, и для поддоменов sub1.mysite.com, sub2.mysite.com и тд., а только для чужих сайтов.
Ну так просто осталось подставить в условие вставку нофловинга

PHP:
$SITE_DOMEN = 'mysite.com';
....
if ( stripos( $url, $SITE_DOMEN ) !== false ) {
// совпало  в урле есть основной домен
return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
} else {
// не совпало в урле не найден основной домен 

return '<noindex><a href="'.$url.'" target="_blank" rel="nofollow">'.$text.'</a></noindex>'
}
Есть правда очень небольшая вероятность что чужой сайт будет открыт, если окончание у него в точности такоеже как и у теяб домен - если у тебя сайт mysupersite.ru а у него coolMysupersite.ru . но вероятность очень небольшая)
 
чтобы вероятность отсечь надо маску сделать чуть сложнее
PHP:
$SITE_DOMEN = '.mysite.com'; // так например
//а сам урл немного преобразовать:

if ( stripos( '.'.$url, $SITE_DOMEN ) !== false ) {
тогда все будет работать и левые домены не пройдут.
 
Назад
Сверху