WordPress网址中的非英语字符导致404错误

时间:2019-06-13 21:12:46

标签: php wordpress url urlencode

我有一个wordpress网站,该网站的模板不支持用户名中的非英语字符。安装了插件后,用户现在可以在用户名中使用utf-8字符(如中文字符)。但我注意到某些链接已损坏(无法找到页面,404错误),因为这些链接将用户名(中文字符)作为URL的一部分。

由于我对wordpress的了解有限,我认为我需要修改重写规则以接受url中的uft8字符。

例如,网址页面

  

“网站域/用户/用户名1 /顶”

在默认的重写规则下效果很好:

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

我将规则更改为:

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

希望它可以处理用户名中带有中文字符的网址。像

  

“网站域/用户/测试用户/顶”。

但是,我收到404错误。使用调试工具,我看到用于匹配重写规则的URL类似于:

“用户%2F%25e6%25b5%258b%25e8%25af%2595%25e7%2594%25a8%25e6%2588%25b7%2Flikes”。

因此,URL中包含中文字符,链接已被编码。

我想解决此问题的一种方法是在重写规则匹配之前强制url解码,但是我不知道在何处以及如何添加解码功能。有人可以帮忙吗?

还有其他更好的方法吗?请随时分享。

我们非常感谢您的帮助。

0 个答案:

没有答案