Как автоматически добавлять атрибут rel="nofollow" ко всем внешним ссылкам?

Статус
В этой теме нельзя размещать новые ответы.

bvb

Мастер
Регистрация
17 Май 2009
Сообщения
189
Реакции
31
Возможно ли такое и каким способом это можно сделать?
 
Извините, конечно, но вопрос из разряда "где находится кнопочка 'сделать все з***сь'" :) Добавлять атрибут нужно где и как? В визуальном редакторе? При добавлении материала на сайт? При открытии странички? На чем ваш проект? Какая CMS? Есть ли фреймворк, в котором есть хуки-перехватчики навроде OnBeforeContentOutput и т.п.?
 
Движок самописный. Может к bbcode прикрутить?
UPD: сделал в bbcode
 
Давайте начнем с того что вы создали топик не в том раздели, для подобных тем я думаю более подходит раздел:

Теперь по сабжу:
Логика обработки:
Перед тем как принтить HTML результат в браузер, добавить параметр rel="nofollow" к текгам <a></a> у которых параметр href="" не содержит site.com (где site.com доменное имя вашего сайта) или не начинается с символа "/" .
 
Давайте начнем с того что вы создали топик не в том раздели, для подобных тем я думаю более подходит раздел:
*** скрытое содержание ***
Теперь по сабжу:
Логика обработки:
Перед тем как принтить HTML результат в браузер, добавить параметр rel="nofollow" к текгам <a></a> у которых параметр href="" не содержит site.com (где site.com доменное имя вашего сайта) или не начинается с символа "/" .
Или парсер влепить на выходе по этим условиям. (я так делал на RubyOnRails)
 
Нет зачем ?!
Тогда уж как в DLE при постинге обработку делать...
Все равно весь контент идет через редактор (покрайней мере должно быть так )) )
А постоянно напрегать сервак переработкой вывода это бред...
С уже имеющимся делов на 5 мин. открываем notepad++ и регуляркой правим и перезаливаем таблицу - вуаля.
 
Самое простое решение - без правки скриптов, при условии что свои ссылки не начинаются с 'http://'
Файл 'backlinks_replace.php'
PHP:
<?php
if(ob_get_level()==0) ob_start();
register_shutdown_function('replace_out_href');
function replace_out_href(){
$outHtml=ob_get_contents();
ob_clean();
//echo preg_replace('/href="(http:\/\/.*?)"/','href="/redirect.php?to=$1"',$outHtml); -- перенаправление через свой редиректор
echo preg_replace('/href="(http:\/\/.*?)"/','href="$1" rel="nofollow"',$outHtml);

}
?>

Вариант когда «параметр href="" не содержит site.com (где site.com доменное имя вашего сайта) или не начинается с символа "/"»
PHP:
<?php
if(ob_get_level()==0) ob_start();
register_shutdown_function('replace_out_href');
function replace_out_href(){
$outHtml=ob_get_contents();
ob_clean();
echo preg_replace_callback('/href="(.*?)"/','check_and_replace',$outHtml);

}
function check_and_replace($var){
if($var[1][0]=='/'|| (strpos($var[1],'site.com')!==false) ) return $var[0];
else return 'href="'.$var[1].'" rel="nofollow"';
}
?>

И в .htaccess добавить запись
Код:
<FilesMatch "\.(php|php3|phtml)$">
php_value auto_prepend_file /полный/путь/к файлу/backlinks_replace.php
</FilesMatch>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху