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

Тема в разделе "PHP", создана пользователем alexz15, 10 сен 2011.

Модераторы: latteo
  1. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    Приветствую! Есть скрипт:
    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 для поддоменов своего сайта?
     
  2. Delk0

    Delk0

    Регистр.:
    26 мар 2010
    Сообщения:
    284
    Симпатии:
    47
    Надо просто указать домен в явной форме
    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>';
     
  3. SiZE

    SiZE Постоялец

    Регистр.:
    31 янв 2010
    Сообщения:
    51
    Симпатии:
    10
    Если это используется только на основном домене, то лучше так:
    PHP:
    if ( stripos$url$_SERVER['SERVER_NAME'] ) !== false ) {
    // совпало
    } else {
    // не совпало
    }
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    так автор просит чтобы не была 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];
     
  5. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    Я имею в виду, чтобы nofollow'a не было и для основного домена mysite.com, и для поддоменов sub1.mysite.com, sub2.mysite.com и тд., а только для чужих сайтов.
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Ну так просто осталось подставить в условие вставку нофловинга

    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 . но вероятность очень небольшая)
     
    alexz15 нравится это.
  7. baddan

    baddan

    Регистр.:
    14 мар 2008
    Сообщения:
    354
    Симпатии:
    42
    чтобы вероятность отсечь надо маску сделать чуть сложнее
    PHP:
    $SITE_DOMEN '.mysite.com'// так например
    //а сам урл немного преобразовать:

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