суббота, 11 июня 2011 г.

Проблема с кириллицей в ЧПУ WordPress

Возникла проблема с кириллическим ЧПУ страниц.
Установлен WordPress 3.x, при переходе на страницу из сайта - все нормально, но если скопировать url страницы в адресную строку браузера и выполнить запрос - мы увидим 404 ошибку. Она возникает потому что адреса страниц не переводятся в нижний регистр, хотя адреса записей работают нормально т.е. переводятся. Проблема уже известна на багтрекере, я лишь публикую ссылку на решение решение данного бага.

Но рано радоваться, это сработает лишь для простых страниц. Если у вашей страницы есть родительская, то будет красоваться все та же 404 ошибка. Увы, решения новой проблемы в интернете не нашлось. Но интерес взял своё и в ходе простых экспериментов было найдено решение и этой проблемы:

По первому решению нам сначала предлагают заменить строку (в файле class-wp.php)
$req_uri = str_replace($pathinfo, '', $req_uri);
на
$req_uri = str_replace($pathinfo, '', rawurldecode($req_uri));
но лучше заменить на эту
$req_uri = str_replace($pathinfo, '', strtolower($req_uri));

Таким образом мы восстановили корректную работу с ЧПУ в вашем блоге.