我有一个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解码,但是我不知道在何处以及如何添加解码功能。有人可以帮忙吗?
还有其他更好的方法吗?请随时分享。
我们非常感谢您的帮助。