- PVSM.RU - https://www.pvsm.ru -

И снова о вечном: улучшение страницы 404 для WordPress

Здравствуйте. Пишу эту статью, чтобы поделится собственными идеями (хотя может многие так делают — я не в курсе).
Есть много статей по улучшению формата страницы «Page not found» для WordPress и вот я предлагаю вам ознакомится ещё с одной.

1. Неправильный адрес страницы

Думаю бывает же такое, когда адрес вашего поста — site.com/post.html [1], а пользователь переходит по адресу site.com/post/ [2] или site.com/post [3]. В таком случае ваша запись не будет найдена. Но ведь она есть на сайте — просто по другому адресу!

Поэтому я решил сделать 301 редирект со страницы с неправильным адресом на «правильную».

(Сразу хочу сознаться, что в регулярных выражениях я не силён, поэтому решил задачу так, как умел. Если опытные пользователи вместо критики в комментариях оставят совет для улучшения и оптимизации моего кода — буду только рад.)

В самое начала файла 404.php вставляем код:

$link	= $_SERVER['REQUEST_URI'];// get_permalink( $id, $leavename );
$pieces = explode("http://site.com", $link);
$return = explode("/", $pieces[sizeof($pieces)-1]);

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://site.com/'.$return[1].'.html');

Таким образом страница будет перенаправлена по верному адресу и в кеш браузера будет записан адрес перенаправления.

2. Случайные записи

Многие советуют выводить на страцице 404 другие записи. Я с этим согласен.
Добавим же в файла 404.php код цикла вывода:

<?php query_posts('orderby=rand&showposts=10'); 
while ( have_posts() ) : the_post();  get_template_part( 'content', '404' ); ?>

3. Планы на будущее

Мой подход, к сожалению, не обрабатывает адрес вида site.com/post.ht [4] — в будущем планирую подучить регулярные выражения и устранить этот недостаток.

Кроме того, было бы уместно выводить не случайные записи, а только те, которые ПОХОЖИ к той, которую искали.
Есть же алгоритмы сравнения степени похожести двух строк? Если кто-то использует, или просто знаком с одним из них — буду рад если поделитесь.

Автор: Kozack

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/35247

Ссылки в тексте:

[1] site.com/post.html: http://site.com/post.html

[2] site.com/post/: http://site.com/post/

[3] site.com/post: http://site.com/post

[4] site.com/post.ht: http://site.com/post.ht

[5] Источник: http://habrahabr.ru/post/180983/