Có chiều dài sên tối đa?


14

Một khách hàng chỉ tạo một bài đăng với một con sên thực sự dài (90 ký tự), không có ký tự đặc biệt (trừ dấu gạch nối), v.v.

Bất cứ khi nào liên kết đến bài đăng đó được nhấp, bao gồm các liên kết "Xem trước" hoặc "Xem bài đăng này" từ phần cuối của Quản trị viên, 404 sẽ được tạo.

Khi chúng tôi tự cắt sên, mọi thứ sẽ hoạt động như mong đợi. Đây là "tính năng" hay "lỗi"?

EDIT: một lưu ý cho tất cả những người nói về giới hạn DB.

Nếu tôi đã đạt giới hạn trường DB, thì bản thân con sên sẽ bị cắt ngắn. Hãy suy nghĩ về nó trong một giây. Trong trường hợp của hầu hết các cài đặt WP, wp_posts.post_name là VARCHAR (200). Vì vậy, hãy nói rằng ai đó gõ vào một tiêu đề có> 200 ký tự. Chuyện gì xảy ra Sên được cắt ngắn thành 200 ký tự và được lưu trữ trong wp_posts.post_name. Nó không giống như ai đó đang đi vào và gõ tiêu đề đầy đủ của bài đăng trên thanh địa chỉ trình duyệt, thay thế dấu cách bằng dấu gạch ngang phải không? URL đang được tạo bởi WordPress và nó nhận URL từ bảng wp_posts.post_name và chỉ cần đặt nó trong thuộc tính href của thẻ neo. Vì vậy, sẽ không có sự chênh lệch ở đó. Toàn bộ điều DB là một cá trích đỏ.

Trong mọi trường hợp, sên trong câu hỏi chỉ là 90 ký tự, vì vậy nó không liên quan gì đến giới hạn DB.

Có bất kỳ hạn chế được biết đến xung quanh viết lại?


1
Bạn có thể sử dụng một công cụ miễn phí như bàn làm việc của MySQL để kiểm tra kiểu dữ liệu (và độ dài tối đa nếu có) của bất kỳ trường wordpress nào được xác định trong bảng / cột wordpress tương ứng
Jordi Cabot

Câu trả lời:


11

Do cấu trúc bảng wp_posts, độ dài của cột post_name (cột cho sên) bằng 200 ký tự.


1
@TomAuger & Eugene - bạn có thể xác nhận vấn đề này không, vì Tom nói rằng con sên có 90 ký tự. Tôi biết rằng giới hạn là 200, nhưng điều này không tính URL nhà, phải không?
brasofilo

@Eugene, chính xác. 200 ký tự. Sên của tôi chính xác là 90 ký tự, vì vậy chúng tôi không đạt giới hạn DB.
Tom Auger

3

Tôi đoán nó không có giới hạn bởi chính nó nhưng thuộc tính của trường trong cơ sở dữ liệu cho sên có thể được đặt thành chiều dài tối đa.

Vì vậy, hãy kiểm tra cơ sở dữ liệu!


@ Người đã đánh giá thấp: Câu trả lời là đúng . Vì vậy, tôi reupvote.
kaiser

0

Có lẽ vấn đề thậm chí không liên quan trực tiếp đến WordPress / cơ sở dữ liệu ...

Nhưng độ dài của URL vượt quá 255 ký tự (và không phải tất cả trình duyệt web đều làm như vậy).

Điều xảy ra ở đây có thể là một URL dài hơn 255 ký tự, bị cắt bởi thanh địa chỉ của trình duyệt khi mở nó ... gây ra việc truy xuất một permalink xấu ... dẫn đến 4o4.

Vì vậy, giả sử chiều dài sên tối đa có thể là:

255 - chiều dài của (Giao thức + FQDN + cấu trúc permalink) ...

  • dựa trên giới hạn cứng của trình duyệt.

Nhưng nó không thể dài hơn 200 ký tự ...

  • dựa trên kích thước trường của post_name.

Ngay cả khi điều gì đó khác có thể đã gây ra 4o4 trong trường hợp cụ thể này.

Đó có thể là một ký tự không đúng url_encoding, lý do cho 4o4 là vô tận ... có bao giờ được coi là một cụm xấu trên ổ cứng hoặc mô-đun RAM bị lỗi không? :)


GUID không phải là URL. Nó chỉ giống như một, nhưng không được sử dụng để đọc một yêu cầu. Nếu bạn di chuyển WordPress từ tên miền này sang tên miền khác, GUID sẽ không bị thay đổi. Xem core.trac.wordpress.org/ticket/6492core.trac.wordpress.org/ticket/10857 .
fuxia

Erm, vì mục đích nhận dạng nào khác ngoài ID nên được sử dụng sau đó? Ý tôi là, câu hỏi về cơ bản là: lý do 4o4 bị ném trong trường hợp này là gì?
Martin Zeitler

404 và GUID không liên quan, tôi nghĩ vậy. WordPress chỉ không sử dụng GUID khi tìm kiếm bài đăng phù hợp với URL.
fuxia

Hãy nghĩ rằng bạn đúng về ... post_name và GUID có thể được loại trừ như là nguồn gốc của vấn đề - những gì còn lại là permalinks và viết lại. Không có logfiles Apache hay bất cứ điều gì, đây chỉ là phỏng đoán;)
Martin Zeitler

@syslogic Tôi nghĩ viết lại có lẽ là nguyên nhân và chịu điều tra thêm. URL, bao gồm cả phần http: // vẫn còn dưới 128 ký tự, vì vậy tôi không nghĩ rằng nó đạt giới hạn trình duyệt cứng về độ dài URL.
Tom Auger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.