Доброго времени суток, дорогие читатели блога Мои тараканы!
В комментариях к прошлой статье мне указали на один баг в работе сайта. А именно на то, что ссылки в статье ведут на несуществующий документ.
Дело в том что у меня линки на внешние сайты замаскированы под внутренние. Для этого я использую плагин WP-NoExternalLinks. Плагин работает следующим образом — он, в начало URL внешней ссылки, через разделитель, добавляет адрес моего блога. Пример: http://presentaci.ru/goto/http://site.ru
. Но при клике на такую ссылку происходит редирект посетителя по нужному адресу. Таким образом, внешние ссылки визуально похожи на внутренние, но на самом деле ведут пользователя на посторонний (в смысле не мой) ресурс.
На счет того, полезна или вредна маскировка ссылок через редирект есть много мнений. Но поскольку, этот метод я начал использовать очень давно и никаких проблем (в плане SEO) с ним не возникало (как мне кажется), то экспериментировать, что-то менять, я не собираюсь.
Так вот, причиной бага с неработающими ссылками оказался конфликт WP-NoExternalLinks с другим плагином. Конфликты возникали и раньше, поэтому я решил описать все известные мне ситуации и способы их решения.
Конфликт с Hyper Cache
Первый плагин, который не подружился с WP-NoExternalLinks, был плагин кэширования Hyper Cache. Как и в ситуации, которую я описал в начале статьи, при переходе по внешней ссылке, посетителя перекидывало на страницу 404.
Вкратце расскажу, как работает плагин Hyper Cache. Вы запрашиваете страничку сайта, wordpress обрабатывает ваш запрос, достаёт из БД (базы данных) все, что должно содержатся на этой странице, плагина обрабатывают это содержимое и лишь потом вы получаете результат в окне браузера. Hyper Cache сохраняет сгенерированную страницу в кэше и при следующем запросе выдаёт вам (или любому другому пользователю) сохранённую копию, минуя длинный путь формирования страницы, что уменьшает скорость её загрузки и уменьшает нагрузку на сервер.
Но вот здесь и кроется основная закавыка. Внешние ссылки в сохраненной копии страницы не обрабатываются плагином WP-NoExternalLinks. То есть, вместо редиректа на внешний ресурс пользователь попадает на внутреннюю страницу вида http://presentaci.ru/goto/http://site.ru
, но, как вы понимаете, такой страницы на сайте не существует (404 Not Found). А это не есть гуд.
На многих сайтах советовали в настройках плагина Hyper Cache указать исключения для страниц имеющих в урле /goto/
. Я указывал и /goto/
и http://presentaci.ru/goto/
и presentaci.ru/goto/
и /404/
— всё зря, ничего не помогло.
Тогда я просто сменил плагин кэширования на WP Super Cache, о чем ни грамма не жалею. Этот плагин оказался ни чем не хуже, я бы сказал даже лучше. Так что, если у вас возникнет похожая проблема — смело сносите Гипер Кеш.
Конфликт с WP-HTML-Compression
WP-HTML-Compression предназначен для сжатия HTML-кода страницы выдаваемой пользователю. Он удаляет лишние пробелы в коде, переносы, отступы и всякое такое. На выходе вес странички (объем кода) уменьшается на несколько килобайт, что положительно влияет на скорость загрузки сайта и, соответственно, на более лояльное отношение к нему со стороны поисковиков.
Хотите посмотреть, как сжимает он ссылки. Из ссылки такого вида http://presentaci.ru/goto/http://site.ru
он вырезает всё лишнее http://presentaci.ru
/goto/http:/
/
site.ru
и превращает в такую /goto/http:/site.ru
. С тем что он превратил абсолютную ссылку в относительную (обрезал http://presentaci.ru) WP-NoExternalLinks справился. Но вот удаление второго слеша после http:
, хотя компрессор действовал правильно (не допускается два слеша подряд в адресе сайта), ввело его в ступор. Как следствие редирект на 404 Not Found.
Моим решением было отказаться от WP-HTML-Compression пока не найду подходящую замену. Ещё не тестировал другие плагины из этой серии, но предполагаю, что проблема будет повторяться.
Кстати, никто не посоветует, чем можно заменить WP-HTML-Compression?
Конфликт с BBQ: Block Bad Queries
Детально о его работе напишу в одной из следующих статей, а сейчас скажу только что, он неплохо предохраняет ваш сайт от взлома.
Лично у меня, с этим плагином проблем не возникало, потому что у меня его нету . Но ходят слухи что, одновременно эти два плагина не работают. Выбирайте сами чего вы хотите: рыбку съесть или на ёлку залезть.
На этом список плагинов конфликтующих WP-NoExternalLinks у меня исчерпан, ну и слава богу. Если вы знаете ещё какой-то — пишите в комментариях, добавлю в список.
С уважением, Мышак Пётр.