我的帖子弹太长了,我不能改变它

时间:2020-03-12 作者:Zisso

我的页面url工作正常,当我键入一个slug,其中包含我的焦点关键字(使用yoast)时,当我从中单击某个代码时,它会自动更改它(%d7%a7%d7%99%d7%93%d7%95%d7%9d-%d7%9e%d7%a0%d7%a6%d7%97)

我已经为它搜索了很多saloution,我发现我需要更改我的网站永久链接设置,我做了,但没有成功。。。

有人知道怎么修吗?

1 个回复
SO网友:Tom J Nowell

这是因为您使用的字符在URL中无效:

קידום-מנצח

URL只允许有限的ASCII字符子集

为了使这些字符在URL中工作,必须对其进行编码。例如,如果我访问example.com/foo bar/ 该空间在URL中无效,因此会转换为example.com/foo%20bar/, 哪里%20 是编码的空格字符URL。

然而,由于slug包含UTF-8多字节字符,因此每个字符都被转换为2个编码实体,使其更长。

所以ק 成为%d7%a7, 等等它们是等效的。浏览器可能会处理这些内容并在地址栏中显示原始字符,但不可能ק 直接显示在协议级别的URL中。

域也有类似的限制,需要不同的编码形式。

那么我该如何摆脱这个呢

你没有。这只是URL的工作方式。即使您让超链接具有所需的字符,浏览器也会将它们转换回实体编码值。

一些浏览器甚至可以看到这些内容,并在向用户显示时对其进行解码,但这纯粹是为了用户的利益,URL实际上没有改变。

所以,我测试了它:

enter image description here

在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/
但如果我查看地址栏,它会显示解码版本:

enter image description here

如果我尝试复制粘贴URL,就会得到编码版本,您会注意到Firfox在状态栏中显示了正确的slug,但标记显示了编码版本:

enter image description here

您可以看到,它们是表示同一事物的两种不同方式

相关推荐

自定义POST类型重写slug转换?

我使用\'rewrite\' => array(\'slug\' => \'uniquename\') 对于自定义帖子类型,我将有两种语言的网站。我试着用if( is_main_site() ) { $slug = \'uniquename\' } else { $slug = \'uniquenametwo\' } 然后在“重写”值中输入,但这似乎不起作用。我还有什么其他选择?