Я уже давно пользуюсь WordPress в качестве движка для своих сайтов. Хоть у профессионалов много нареканий на производительность и безопасность движка, меня же подкупает его распространенность, множество тем, плагинов и главное — информации о решении проблем.
С давних пор я пользуюсь плагином (J) ExR (JawsIk External Redirect Plugin). Это замечательный плагин для движка WordPress, преобразовывающий внешние ссылки во внутренние и делает для них редирект. Это очень полезно для продажи ссылок в сапе и … наверное для поднятия ТИЦа(хотя терзают меня тут смутные сомнения).
Совсем недавно столкнулся с тем, что JExR начал странно себя вести. Cсылки, переделываемые плагином перестали открываться и в браузере выскакивала ошибка
Error 404 — Not Found
Странно, на другом сайте этот же плагин работает, разница лишь в хостерах и возможно версиях WordPress, есть подозрение, что это все версия 3.1 косячит. В общем стал я разбираться, открыл исходник плагина и вот что нашел.
В плагине есть такой кусочек кода:
function j_global_redirect()
{
global $jexr_opt;
$url=$_SERVER['REQUEST_URI'];
Его задача — получить в переменную $url содержимое адресной строки браузера. Самое интересное, что при этом присвоении теряется один косой слеш. Например:
-/external/http:/feeds.feedburner.com/seoforpeople-
-/external/http://feeds.feedburner.com/seoforpeople-
Видите разницу?
http:// меняется на http:/
Вот в этом и есть причина ошибки плагина для wordpress JExR. После присвоения переменной $url значение меняется, кто выдирает обратный слеш я уж не знаю. PHP, Apache, WordPress? Может это настройки безопасности в PHP? Если знаете — напишите, плиз.
Поскольку я полный ламер в php и настройке веб серверов, то сделал вот такой костыль для своей ситуации, сразу после строки
$url=$_SERVER['REQUEST_URI'];
добавил
$url= str_replace ( "http:/" , "http://" , $url );
Вместе получилось так:
function j_global_redirect()
{
global $jexr_opt;
$url=$_SERVER['REQUEST_URI'];
$url= str_replace ( "http:/" , "http://" , $url );
Данный костыль, как решение, меня вполне устраивает, поэтому оставлю пока так. Если Вы знаете точное объяснение причины, то напишите плиз в коментах к этому посту.
плагин для wordpress для сокрытия внешних ссылок
как скрыть внешние ссылки в wordpress
проблема 404 с плагином JExR для wordpress
JExR для wordpress не работает
JExR для wordpress не преобразует внешние ссылки к внутренним