Wordpress игнорирует символы Юникода в URL - PullRequest
21 голосов
/ 19 марта 2010

Я использую WordPress с этим типом постоянной ссылки:

/% год% /% monthnum% /% postname% /

если я использую этот тип URL: example.com/2010/03/ तकनीक

он обрабатывает этот URL как этот пример.com/2010/03/ (игнорируя символы Юникода) и отображает список архивов за март 2010 года.

если я использую английскую ссылку: example.com/2010/03/technology тогда это работает отлично.

Эта проблема возникает даже на странице тегов: например example.com/tag/ इंटरनेट обрабатывается как example.com/tag/ и отображает страницу 404.

Почему WordPress игнорирует символы Unicode?

Если я использую структуру строки запроса по умолчанию, то она отлично работает даже с символами Юникода.

Информация о сервере: Сервер IIS7 Win2008 (перезапись URL включена) Wordpress 2.9.2

Ответы [ 3 ]

10 голосов
/ 07 декабря 2011

Для обзора проблемы просмотрите:

http://ruslany.net/2010/03/important-update-for-iis-7-0-fastcgi-module/

Это относится к устаревшей версии:

http://ruslany.net/2010/02/fastcgi-module-differences-across-iis-versions/

Моя собственная ситуация была исправлена ​​с помощью Win 7 SP1, но, что интересно, я все еще остался с применением взлома реестра, который описан в исправлении:

http://support.microsoft.com/kb/2277918

4 голосов
/ 21 марта 2010

Я использую сервер WAMP на локальной машине. Я протестировал $ _SERVER ['PATH_INFO'] на своем веб-сервере IIS7 и обнаружил, что у него есть проблема с Unicode. Wordpress использует path_info для обработки URL. Я создал файл test.php со следующим кодом:

Если я запрашиваю http://example.com/test.php/कुछशब्द/कुछऔरशब्द/english

тогда я получаю этот вывод

---- **** ----

/ ??????? / ????????? / английский ---- **** ---- path_info преобразует символы хинди юникода в ?????. Это означает, что есть некоторая проблема в переменной path_info на моем сервере. Знаете ли вы какие-либо настройки IIS7, которые могут вызвать такие проблемы?

Тот же код отлично работает на моем локальном сервере Apache Windows.

1 голос
/ 14 января 2015

Статья КБ предоставляет исправление, которое не работает для моей версии Windows и / или кода для использования с использованием Пуск> Выполнить , которое также не работает и не работает добавить ключ реестра по какой-то причине в моем случае на Windows 7 Ultimate и IIS 7.5.7600

reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO

Мне пришлось сделать один из следующих вариантов:

1) Добавить рег. Введите вручную в HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ w3svc \ Parameters, добавив новое многострочное значение >> Имя значения: FastCGIUtf8ServerVariables Значение данных (две строки): REQUEST_URI PATH_INFO

2) Выполните код, используя cmd.exe в качестве администратора , затем вставьте код и извините

В обоих случаях не забудьте выполнить команду iisreset для cmd.exe в качестве администратора после предыдущего шага.

...