Плагин JExR для wordpress и ошибка Error 404 — Not Found

Плагин JExR для WordPress и ошибка 404 Я уже давно пользуюсь 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

плагин JExR для wordpress

проблема 404 с плагином JExR для wordpress

JExR для wordpress не работает

JExR для wordpress не преобразует внешние ссылки к внутренним

Подписаться на рассылку «SEO for people»

2 Comments

  1. Спасибо за статью! Мне помогло!

  2. Большое спасибо, выручил. А то не мог понять в чем проблема на моем блоге была

Leave a Reply


eXTReMe Tracker Яндекс.Метрика