IIS wordpress cyrillic permalinks error 404

October 15th, 2009 | Tags: ,

Фрагменты из переписки с Русланом Якушевым на тему неработающих на IIS 7.0 кириллических пермалинков в вордпрессе:

===

Я: Должны ли корректно обрабатываться url-и c кириллическим %postname%? В данный момент получаю 404 ошибку.

В качестве workaround можно использовать плагин к вордпрессу Cyr2Lat Slugs, например, заодно url-ы становятся читабельными. Но хочется, чтобы wordpress работал “из коробки” хоть сколько-нибудь корректно (без 404-ой ошибки), это возможно?

Р.Я.: Вы не знаете работает ли это на Unix системах? У меня есть подозрение что это может быть вызвано тем что IIS раскодирует УРЛ перед тем как сохранить его в серверной переменной REQUEST_URI, которая используется WordPress. Из за этого WordPress пытается раскодировать раскодированный УРЛ еще раз.

Эта теория подтверждается следующим workaround. Добавьте в начале wp-config.php вот эту строку с кодом:

if ( isset($_SERVER[‘UNENCODED_URL’]) ) {
$_SERVER[‘REQUEST_URI’] = $_SERVER[‘UNENCODED_URL’];
}

После этого должно заработать. Но url-ы в адресной строке все равно не читабельные в IE8, хотя вполне читабельные во всех остальных браузерах (Firefox, Chrome, Opera, Safari).

Я: Я проверил кириллические пермалинки в вордпрессе на нашем стандартном unix-хостинге, с FreeBSD/Apache – там они сразу работают нормально, ну разве что URL-ы в IE8 тоже нечитабельного вида.

Р.Я.: Действительно проблема в том как иис обрабатывает закодированные урлы. В иис всегда было так что урл раскодирутся в самом начале обработки запроса и все модули уже работают с раскодированным урл. Похоже что на апаче это не так.

Я не думаю что в обозримом будушем в иис будет внесено изменение по этому поводу, но можно попробовать открыть тикет в вордпресс, чтобы они использовали UNENCODED_URL на иис. Должно быть тривиальное изменение.

===

Workaround этот работает, проверено. Кто хочет завести баг разработчикам вордпресса? :-)

Comments are closed.