неанглийские символы в WordPress URL вызывают ошибку 404 - PullRequest
0 голосов
/ 14 июня 2019

У меня есть сайт WordPress, созданный по шаблону, который не поддерживает неанглийские символы в имени пользователя.С установленным плагином пользователи теперь могут использовать в своем имени пользователя символы utf-8 (например, китайские символы).но я заметил, что некоторые ссылки не работают (страницы не могут быть найдены, ошибка 404), так как эти ссылки содержат имя пользователя (китайские символы) как часть URL.

Учитывая мои ограниченные знания в области WordPress, я думаю, что мне нужно изменить правила переписывания, чтобы принимать символы uft8 в URL.

Например, страница URL

'website-domain / users / username1 / likes'

хорошо работает с правилом перезаписи по умолчанию:

 'regex'     => '^users/([a-z0-9_-]+)/likes/?$',

Я изменил правило на:

 'regex'     => '^users/([a-z0-9_-\p{Han}]+)/likes/?$'

И надеюсь, он сможет обрабатывать URL с китайскими символами в имени пользователя.как

'website-domain / users / 测试 用户 /likes'.

Однако я получил ошибку 404.С помощью инструмента отладки я увидел, что URL, используемый для соответствия правилам перезаписи, выглядит следующим образом:

'users% 2F% 25e6% 25b5% 258b% 25e8% 25af% 2595% 25e7% 2594% 25a8% 25e6% 2588%25b7% 2Flikes'.

Таким образом, с китайскими иероглифами внутри URL, ссылка была закодирована.

Я думаю, что один из способов решения этой проблемы - принудительно декодировать URL-адрес перед соответствием правила перезаписи, но я неНе знаю, где и как добавить функцию декодирования.Может ли кто-нибудь помочь?

Есть ли другие способы сделать это лучше?Пожалуйста, не стесняйтесь поделиться.

Ваша помощь высоко ценится.

...