スラグの最大長はありますか?


14

クライアントは、非常に長いスラッグ(90文字)、特殊文字(ハイフン以外)などのない投稿を作成しました。

管理バックエンドからの「プレビュー」または「この投稿を表示」リンクを含む、その投稿へのリンクがクリックされるたびに、404が生成されました。

スラッグを手動でトリミングすると、すべてが期待どおりに機能しました。これは「機能」ですか「バグ」ですか?

編集:DBの制限について話しているすべての人のためのメモ。

DBフィールドの制限に達した場合、スラッグ自体は切り捨てられます。少し考えてみてください。ほとんどのWPインストールの場合、wp_posts.post_nameはVARCHAR(200)です。だから、誰かが200文字以上のタイトルを入力したとしましょう。何が起こるのですか?スラッグは200文字に切り捨てられ、wp_posts.post_nameに保存されます。誰かがブラウザのアドレスバーに投稿の完全なタイトルを入力して、スペースをダッシュ​​で置き換えているわけではありませんか?URLはWordPressによって生成されており、wp_posts.post_nameテーブルからURLを取得し、それをアンカータグのhref属性に配置しています。したがって、そこに格差はありません。DB全体は赤いニシンです。

いずれにせよ、問題のスラッグは90文字しかないため、DBの制限とは関係ありません。

書き換えに関する既知の制限はありますか?


1
対応するワードプレスのテーブル/列で定義されているあなたは、任意のワードプレスのフィールドのデータ型(最大長さがあれば)を確認するために、MySQLのワークベンチのような無料のツールを使用することができます
ジョルディキャボットを

回答:


11

wp_postsテーブル構造のため、post_name列(スラッグの列)の長さは200文字です。


1
@TomAuger&Eugene-スラッグには90文字が含まれているとトムが言っているので、問題を確認できます。私は制限が200であることを知っていますが、これはホームURLをカウントしませんか?
ブラソフィロ

@Eugene、正確に。200文字。私のスラッグは正確に90文字でしたので、DBの制限に達していません。
トム・オージェ

3

私はそれ自体に制限はないと思いますが、スラッグのデータベース内のフィールドのプロパティは最大長に設定されている可能性があります。

データベースを確認してください!


@投票した人:答えは正しいです。したがって、私は再び支持した。
カイザー

0

おそらく、問題はWordPress /データベースに直接関係していなかったのでしょう...

しかし、URLの長さは255文字を超えていました(すべてのWebブラウザーがそのようになっているわけではありません)。

ここで何が起こったのかは、255文字より長いURLであった可能性があり、ブラウザのアドレスバーを開くと切り詰められました...不正なパーマリンクを取得しました...これは4o4になりました。

したがって、スラグの最大長は次のようになります。

255-(プロトコル+ FQDN +パーマリンク構造)の長さ...

  • ブラウザのハード制限に基づきます。

しかし、200文字を超えることはできません...

  • post_nameのフィールドサイズに基づきます。

他の何かがこの特定のケースで4o4を引き起こしたとしても。

それは適切にurl_encodeされていないキャラクターである可能性があります。4o4の理由は非常に無限です... HDD上の不良クラスターまたは障害のあるRAMモジュールと考えられたことはありますか?:)


GUIDはURLではありません。たまたま1つのように見えますが、リクエストの読み取りには使用されません。WordPressをあるドメインから別のドメインに移動しても、GUIDは変更されません。core.trac.wordpress.org/ticket/6492およびcore.trac.wordpress.org/ticket/10857を参照してください。
FUXIA

えーと、その場合、識別目的以外に一意のIDを使用する必要がありますか?つまり、質問は基本的に、この場合に4o4がスローされる理由は何ですか?
マーティンツァイトラー

404とGUIDは関係ありません。WordPressは、URLに一致する投稿を検索するときにGUIDを使用しません。
FUXIA

その通りだと思います... post_nameとGUIDは問題の原因として除外できます-残っているのはパーマリンクとリライトです。Apacheのログファイルなどがなければ、これは推測されているだけです;)
Martin Zeitler

@syslogic書き換えがおそらく原因であり、さらなる調査が必要だと思います。http://部分を含むURLは依然として128文字未満でしたので、URLの長さがブラウザの厳しい制限に達していないと思います。
トム・オージェ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.