这是因为您使用的字符在URL中无效:
קידום-מנצח
URL只允许有限的ASCII字符子集
为了使这些字符在URL中工作,必须对其进行编码。例如,如果我访问example.com/foo bar/
该空间在URL中无效,因此会转换为example.com/foo%20bar/
, 哪里%20
是编码的空格字符URL。
然而,由于slug包含UTF-8多字节字符,因此每个字符都被转换为2个编码实体,使其更长。
所以ק
成为%d7%a7
, 等等它们是等效的。浏览器可能会处理这些内容并在地址栏中显示原始字符,但不可能ק
直接显示在协议级别的URL中。
域也有类似的限制,需要不同的编码形式。
那么我该如何摆脱这个呢
你没有。这只是URL的工作方式。即使您让超链接具有所需的字符,浏览器也会将它们转换回实体编码值。
一些浏览器甚至可以看到这些内容,并在向用户显示时对其进行解码,但这纯粹是为了用户的利益,URL实际上没有改变。
所以,我测试了它:
在firefox中,我发布了这篇文章并在前端访问了它,firefox转到了编码的URL:
http://one.wordpress.test/2020/03/10/%D7%A7%D7%99%D7%93%D7%95%D7%9D-%D7%9E%D7%A0%D7%A6%D7%97/
但如果我查看地址栏,它会显示解码版本:
如果我尝试复制粘贴URL,就会得到编码版本,您会注意到Firfox在状态栏中显示了正确的slug,但标记显示了编码版本:
您可以看到,它们是表示同一事物的两种不同方式