Подтвердить что ты не робот

Wordpress игнорирует символы Unicode в URL-адресе

Я использую wordpress с этим типом permalink:

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

В статье KB статьи содержится исправление, которое не работает для моей версии 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 как администратор после предыдущего шага.