是否有最大弹头长度?


14

一位客户刚刚创建了一个帖子,其中包含一个很长的段落(90个字符),没有特殊字符(连字符除外)等。

每当单击该帖子的链接(包括来自Admin后端的“预览”或“查看此帖子”链接)时,都会生成404。

一旦我们手动修剪了弹头,一切都会按预期进行。这是“功能”还是“错误”?

编辑:所有讨论数据库限制的人的注释。

如果我达到了数据库字段限制,那么该段自身将被截断。想一想。对于大多数WP安装,wp_posts.post_name为VARCHAR(200)。因此,假设有人输入的标题超过200个字符。怎么了?子弹被截断为200个字符,并存储在wp_posts.post_name中。并不是有人要在浏览器地址栏中输入帖子的完整标题,而是用短划线代替空格,对吗?该URL是由WordPress生成的,它是从wp_posts.post_name表中获取URL并将其放入锚标记的href属性中的。因此,那里不会有差距。整个数据库的事情都是红鲱鱼。

无论如何,有问题的子弹只有90个字符,因此与数据库限制无关。

重写有任何已知的限制吗?


1
您可以使用MySQL工作台之类的免费工具来检查相应wordpress表/列中定义的任何wordpress字段的数据类型(以及最大长度,如果有的话)
Jordi Cabot 2012年

Answers:


11

由于wp_posts表结构的原因,post_name列(用于slug的列)的长度等于200个字符。


1
@TomAuger&Eugene-您可以确认这个问题,因为汤姆说says中有90个字符。我知道限制为200,但这不计入原始URL,对吗?
brasofilo 2012年

@Eugene,完全是。200个字符。我的子弹刚好是90个字符,因此我们没有达到数据库限制。
Tom Auger 2012年

3

我猜它本身没有限制,但是数据库中的段的属性可能设置为最大长度。

因此,请检查数据库!


@不赞成投票的人:答案是正确的。因此,我重新投票。
kaiser 2012年

0

可能问题根本不与WordPress /数据库直接相关...

但是,URL的长度超过了255个字符(并非所有的网络浏览器都这样做)。

这里发生的事情可能是一个长度超过255个字符的URL,当打开该URL时浏览器的地址栏将其截断了...导致检索了错误的永久链接...导致4o4。

因此,假定最大子弹长度可能是:

255-(协议+ FQDN +永久链接结构)的长度...

  • 基于浏览器的硬限制。

但这不能超过200个字符...

  • 基于post_name的字段大小。

即使在这种特殊情况下,其他原因也可能导致4o4。

可能是一个字符,也没有正确的url_encoded,4o4的原因无穷无尽……曾经被认为是HDD上的坏簇或RAM模块有问题吗?:)


GUID不是URL。它恰好看起来像一个,但并不用于读取请求。如果将WordPress从一个域移动到另一个域,则GUID不会更改。参见core.trac.wordpress.org/ticket/6492core.trac.wordpress.org/ticket/10857
fuxia

嗯,除了识别目的之外,还应该使用唯一ID?我的意思是,问题基本上是:在这种情况下抛出4o4的原因是什么?
马丁·泽特勒

我认为404和GUID不相关。WordPress在搜索与URL匹配的帖子时只是不使用GUID。
福厦

认为您是对的... post_name和GUID可作为问题的根源而排除-剩下的是永久链接和重写。没有Apache日志文件或其他任何内容,这只是个猜测;)
Martin Zeitler,2012年

@syslogic我认为重写可能是原因,需要进一步调查。URL(包括http://部分)仍不到128个字符,因此我认为浏览器对URL长度没有限制。
汤姆·奥格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.