Не работает ....../redirect?url=http://.....

#31 31 октября 2013 в 20:46

Перед строкой… вставить

Sonat

Но ведь это выполняется в случае, если не выполняется условие "if"? Или я не прав? А если в "if", сработает переменная title строка 1290? Ведь в таком случае условие "elseif" не будет выполнено, а ведь именно в него мы помещаем:
  1. $attr .= ' rel="nofollow"';
Вы уж извините меня за такое "чайничество" в PHP, но просто скажите в чём я не прав...

Опять-же, вышеуказанное предложение заключать в фигурные скобки?
#32 31 октября 2013 в 21:07
Sonat Я попробовал ваш способ. Самое интересное то, что получается не по моему и не по вашему! Увы, rel="nofollow" как раз-то добавляется когда у ссылки даёшь описание. А вот когда просто редактор сам преобразует ссылку в ссылку — остаётся лишь target="_blank"

Причём если дать описание ссылки, полностью копирующее её адрес (при вставке ссылки в редакторе именно как ссылки с описанием), то всё равно будет только target="_blank"

Нужна доработка! Поспособствуйте пожалуйста…
#33 31 октября 2013 в 21:24

Но ведь это выполняется в случае, если не выполняется условие "if"? Или я не прав?

AVanti_473
Нет, надо писать строку вне условия IF. Прямо перед возвратом результата.
Т.е. код должен выглядеть так:
  1.  
  2. if ($target) { $attr .= ' target="'.$this->cleanAttrValue($target).'"'; }
  3. //Если аттрибут target не указан, считать, что ссылки надо открывать в новом окне.
  4. elseif (!$local)
  5. { $attr .= ' target="_blank"'; }
  6. $attr .= ' rel="nofollow"';
  7. return '<a'.$attr.'>'.$this -> get_html($elem['val']).'</a>';
#34 31 октября 2013 в 21:32

Т.е. код должен выглядеть так:

Sonat
Кх, ну сделал теперь всё с точностью как вы предлагаете, как ни странно — результат тот-же. Добавляю тестовую ссылку на той же стене пользователя, и если она с описанием, то всё работает, а если без, либо описание повторяет адрес ссылки, то в атрибутах только target="_blank"
Что я делаю не так?

И если честно, я по своим ламерским конспектам не увидел разницу написания с моей первоначальной конструкцией (по вашей подсказке):

  1. //Если аттрибут target не указан, считать, что ссылки надо открывать в новом окне.
  2. elseif (!$local)
  3. { $attr .= ' rel="nofollow"';
  4. $attr .= ' target="_blank"'; }
  5. return '<a'.$attr.'>'.$this -> get_html($elem['val']).'</a>';
#35 31 октября 2013 в 21:46

не увидел разницу…

AVanti_473
Разница в том, что строку которую я написал вне ветки elseif {...}
внесли внутрь фигурных скобок.
#36 31 октября 2013 в 21:51

Разница в том, что строку которую я написал вне ветки elseif {...} внесли внутрь фигурных скобок.

Sonat

Да, но ведь не работает ни по моему ни по вашему… Второй раз я же сделал в точности как вы написали, фаил перезалил на сервер и всё равно работает так, как я описал выше…
#37 31 октября 2013 в 22:06
в томже файле находите строки
  1. '<a href="/redirect?url=$1" target="_blank">$1</a>$2',
  2. '$1<a href="/redirect?url=http://$2" target="_blank">$2</a>$3',
и добавляете в тег а nofollow
т.е. должно быть
  1. '<a rel="nofollow" href="/redirect?url=$1" target="_blank">$1</a>$2',
  2. '$1<a rel="nofollow" href="/redirect?url=http://$2" target="_blank">$2</a>$3',
#38 31 октября 2013 в 22:24

и добавляете в тег а nofollow

Sonat

Да, в этой связке работает! Большое Вам спасибо!!! Правда я сделал так:

  1. '<a href="/redirect?url=$1" rel="nofollow" target="_blank">$1</a>$2',
  2. '$1<a href="/redirect?url=http://$2" rel="nofollow" target="_blank">$2</a>$3',
Но да там не суть важно, скорее чисто для эстетики кода...

Остался ещё вопросик. Все предыдущие ссылки, добавленные до этого редактирования, имеют только target="_blank"
Скажите пожалуйста, можно их снабдить как-нибудь новым атрибутом?

P.S. Отчистка кэша сайта не помогла… Мож где в базе сидит инфа?
#39 31 октября 2013 в 23:47

Мож где в базе сидит инфа?

AVanti_473

Так и есть! Взял базу с сервера, там они все родные ссыли и сидят с атрибутами… И только вновь добавленные уже с атрибутом rel="nofollow"

Ну теперь два варианта:
— Либо в ручную править 200 записей в базе, добавляя rel="nofollow" (в принципе терпимо).
— Либо, может быть, спасёт программа "Replace Text in Many Files". Ежели конечно при замене не напортачит с кодировкой базы и не выведет сайт в небытие… Хотя в принципе текст-то в одном файлике, тут и автозамена Notepad++ должна справиться...

Sonat
большое спасибо ещё раз за отзывчивость и помощь в решении моей проблемы!!!!!!!!
#40 31 октября 2013 в 23:58
Угумс, все в базе, можно и через Notepad++ заменить в дампе…

Рад был помочь )
#41 17 ноября 2013 в 19:55

Внешние ссылки через ....../redirect?url=http://… не срабатывают и открывают пустую страницу:

kreator
kreator, Вы разобрались в чем причина была? А то такая же проблема, только у меня ошибка 404 выходит
#42 27 января 2014 в 01:20

kreator: Внешние ссылки через ....../redirect?url=http://… не срабатывают и открывают пустую страницу: kreator, Вы разобрались в чем причина была? А то такая же проблема, только у меня ошибка 404 выходит

Та же проблема выбрасывает на 404, кто нибудь знает как решить?
#43 27 января 2014 в 08:45


Та же проблема выбрасывает на 404, кто нибудь знает как решить?

vgorode

У меня была аналогичная проблема в УК. Решается просто, нужно указывать ссылки с указанием протокола http://
Кириллические домены также стараюсь указывать в punycode.
#44 27 января 2014 в 19:22
как вариант, у меня была подобная проблема, была везде где был редирект. Возможно и вам поможет. Решение тут — instantcms.ru/forum/thread16628-1.html
#45 28 января 2014 в 16:35
Большое спасибо, за рекомендации Max и Василий!
У меня проблема оказалась в том что сайт на двух доменах с РФ переходит по ссылкам с ru нет, кидает на 404.
Может кто сталкивался, подскажите решение?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.