Trình tạo URL Slug

Chuyển đổi mọi tiêu đề thành URL slug sạch trên trình duyệt — tạo từng cái hoặc hàng loạt cùng lúc. Chuẩn chuyển ngữ thực tế, quy tắc có thể chỉnh sửa và không bao giờ tải dữ liệu của bạn lên máy chủ.

Nhập văn bản để chuyển đổi
Tùy chọn nâng cao

Slug là phần đuôi dễ đọc của một địa chỉ web — giống như my-first-post trong example.com/blog/my-first-post. Đây là phần mà người dùng có thể đọc trước khi quyết định nhấp vào, và là phần công cụ tìm kiếm đọc như một mô tả ngắn gọn về nội dung trang, vì vậy nó cần được chú trọng hơn một ID cơ sở dữ liệu hay ngày tháng. Trình tạo miễn phí này biến bất kỳ văn bản nào thành slug: dán tiêu đề vào "Văn bản cần chuyển đổi", nhấn "Tạo", kết quả sẽ hiện ra cùng một nút sao chép bên cạnh. Các thiết lập mặc định là những tùy chọn hầu hết các trang web cần — "Chữ thường", dấu gạch ngang giữa các từ, loại bỏ các từ khóa nối phổ biến, chuyển ngữ các chữ cái không phải Latin — nên bạn sẽ có ngay một slug khả dụng chỉ với một cú nhấp chuột, và bạn có thể thay đổi bất kỳ thiết lập nào bằng các công tắc tương ứng.

Mọi thao tác đều diễn ra trên thiết bị của bạn. Trang web tải một engine JavaScript nhỏ và chạy hoàn toàn cục bộ: tiêu đề của bạn không bao giờ bị tải lên, không bị ghi lại và công cụ vẫn tiếp tục hoạt động khi ngắt kết nối mạng. Đó cũng là lý do kết quả cập nhật ngay lập tức khi bạn thay đổi một cài đặt. Thứ tự thực hiện rất đáng để nêu rõ, vì nó giúp bạn đoán trước được đầu ra: một liên kết dán vào sẽ được rút gọn lấy phần cuối trước, sau đó văn bản được chuyển thành chữ thường, xóa các từ khóa dừng, chuyển ngữ các ký tự không phải Latin, rồi xóa số và ký tự đặc biệt nếu bạn yêu cầu, những gì còn lại sẽ được nối bằng ký tự phân cách của bạn, cắt bớt theo độ dài tối đa, và cuối cùng các từ lặp lại sẽ nhận một hậu tố dạng số. "Văn bản cần chuyển đổi" nhận tới 500.000 ký tự cùng lúc, tương đương với vài ngàn tiêu đề bài viết.

Một dòng đầu vào sẽ cho ra một slug. Khi bạn dán cả một danh sách tiêu đề, mỗi dòng sẽ trở thành một slug được đánh số riêng, với tiêu đề gốc hiển thị màu xám ngay phía trên, nhờ vậy trong một đợt gồm năm mươi tiêu đề bạn vẫn biết slug nào thuộc về tiêu đề nào. Bạn không cần sao chép nội dung vào khay nhớ tạm nếu danh sách đã nằm trong tệp: "Tải từ tập tin", nút bên cạnh ô nhập, sẽ mở các tệp văn bản thuần — .txt, .csv, .md, .json và tương tự — rồi thả nội dung vào trường nhập. Trình duyệt của bạn sẽ đọc tệp đó giống hệt như cách nó đọc nội dung bạn gõ và không tải nó lên bất cứ đâu. "Chia dữ liệu đầu vào bằng" quyết định cách cắt danh sách. Mặc định là "Tự động phát hiện": dấu ngắt dòng luôn phân tách các mục, trong khi dấu phẩy chỉ phân tách khi đầu vào là một dòng duy nhất mà các phần của nó trông giống các giá trị độc lập — vì vậy "giá 3,5 triệu đồng" và "Chương 5: kết quả, kết luận" được giữ nguyên chứ không bị vỡ thành nhiều mảnh. "Dòng mới", "Dấu phẩy" và "Khoảng trắng" giúp bạn ép buộc lựa chọn khi đã biết trước định dạng dữ liệu của mình. "Định dạng kết quả" quyết định cách danh sách trả về khi bạn nhận lấy nó — mỗi mục một dòng, "Phân cách bằng khoảng trắng" hay "Phân cách bằng dấu phẩy" — và cả "Sao chép tất cả" lẫn "Lưu vào tệp" đều tuân theo cài đặt này. Tính năng "Lịch sử" giữ lại 10 đợt chuyển đổi gần nhất ngay trên trình duyệt của bạn, vì vậy danh sách bạn vừa làm một giờ trước vẫn còn ở đó.

Văn bản không phải chữ Latin là phần mà phần lớn trình tạo slug làm tương đối đúng, nhưng rất ít công cụ làm chính xác hoàn toàn. Một URL an toàn nhất khi ở dạng ASCII thuần túy, nên các chữ cái tiếng Kirin, Hy Lạp, Ả Rập, tiếng Trung và chữ có dấu của châu Âu phải được chuyển đổi, và câu hỏi thực sự duy nhất là theo quy tắc của ai. Trang này giải quyết bằng hai lớp. Lớp chung bao gồm mọi hệ thống chữ viết: một thư viện chuyển ngữ cung cấp đáp án ASCII hợp lý cho gần như bất kỳ ký tự nào bạn có thể gõ, đó là ý nghĩa của tùy chọn "Tự động (mọi ngôn ngữ)" trong "Chuyển ngữ từ". Lớp riêng biệt là bộ các bảng làm thủ công dành cho các ngôn ngữ mà kết quả chung không giống với cách quốc gia đó thực sự sử dụng; danh sách trong menu "Chuyển ngữ từ" liệt kê những ngôn ngữ đã có bảng tùy chỉnh tính đến hôm nay và số lượng sẽ tăng lên khi công cụ hỗ trợ thêm các ngôn ngữ cần đến nó. Khi bạn chọn một bảng, nó sẽ tải vào lưới có thể chỉnh sửa bên dưới "Quy tắc chuyển ngữ", nơi mọi chữ cái là một trường văn bản bạn có thể thay đổi, và nút "Đặt lại quy tắc về mặc định" giúp khôi phục lại. Bảng tiếng Ukraina tuân theo Nghị quyết số 55 năm 2010 của Hội đồng Bộ trưởng, tiêu chuẩn được in trên hộ chiếu Ukraina, bao gồm những chi tiết rất dễ làm sai: зг trở thành zgh thay vì zh để phân biệt với ж; є, ї, й, ю và я có một dạng ở đầu từ và dạng khác khi nằm giữa từ; và dấu nháy đơn cùng dấu mềm bị loại bỏ mà không bắt đầu từ mới, nên Знам'янка ra kết quả là znamianka chứ không phải znamyanka. Tiếng Đức mặc định theo dạng mở rộng ä → ae, ö → oe, ü → ue mà các địa chỉ Đức thực sự dùng, kèm theo một biến thể ä → a đơn giản hơn nếu bạn muốn.

Tùy chọn "Xóa từ khóa dừng" được bật mặc định. Nó loại bỏ các từ nối ngắn — a, the, and, of, for — làm cho slug dài hơn mà không thêm ý nghĩa nào. Danh sách dưới mục "Từ khóa dừng" hoàn toàn có thể chỉnh sửa và được điền sẵn: một danh sách tiếng Anh cộng thêm một danh sách cho ngôn ngữ của trang bạn đang truy cập, vì thế trang Ukraina biết các từ в, на, та và і, còn trang tiếng Đức biết der, die và das. Bạn có thể thêm từ của riêng mình, xóa những từ muốn giữ lại hoặc tắt hẳn tính năng này, khi đó trường nhập liệu sẽ chuyển sang màu xám thay vì tỏ ra vẫn còn tác dụng. Có hai lưu ý thực tế về tính năng này. Việc loại bỏ từ khóa dừng mang lại lợi ích về sự gọn gàng chứ không phải là một công cụ giúp tăng hạng — bạn sẽ có một địa chỉ ngắn, sạch sẽ hơn, chứ không phải một vị trí tốt hơn. Và nếu mọi từ trong tiêu đề tình cờ đều nằm trong danh sách, kết quả thực tế là không còn từ nào cả, nên công cụ sẽ báo cho bạn biết thay vì đưa bạn một ô trống.

Các công tắc còn lại quyết định hình dạng của slug. "Ký tự phân cách trong slug" chọn ký tự nằm giữa các từ, và mặc định dùng dấu gạch ngang không phải là chuyện sở thích: Google đọc dấu gạch ngang làm dấu phân cách từ và dấu gạch dưới như một ký tự nối, do đó my_first_post được crawler đọc thành một từ dài trong khi my-first-post được đọc thành ba từ. "Dấu gạch dưới (_)" có sẵn dành cho các hệ thống khăng khăng yêu cầu nó. "Chữ thường" được bật vì hầu hết các máy chủ phân biệt chữ hoa chữ thường trên địa chỉ, và chữ hoa chữ thường lẫn lộn là cách dễ nhất dẫn đến việc có hai URL cho cùng một trang. Tùy chọn "Xóa ký tự đặc biệt" sẽ loại bỏ mọi thứ không phải là chữ cái, chữ số, khoảng trắng, dấu gạch ngang hoặc dấu gạch dưới, qua đó giúp chặn các dấu câu, dấu ngoặc kép và biểu tượng cảm xúc lọt vào địa chỉ — biểu tượng cảm xúc được xóa đặc biệt ngay trước khi chuyển ngữ để một biểu tượng tên lửa không biến thành chữ rocket. "Xóa số" được tắt, vì một con số trong tiêu đề thường là một phần của tiêu đề. "Độ dài tối đa" chạy từ 10 đến 200 và mặc định là 80; khi một slug dài hơn giới hạn, engine sẽ cắt ở từ hoàn chỉnh cuối cùng vừa vặn thay vì cắt ngang giữa một từ. Con số bên cạnh mỗi kết quả là độ dài tính bằng ký tự của nó, và nó sẽ chuyển sang màu đỏ khi vượt quá 60 — không phải là giới hạn cứng, mà là điểm mà một slug bắt đầu bị cắt bớt trong kết quả tìm kiếm và trở nên bất tiện khi dán vào tin nhắn.

Hai công tắc nữa tồn tại vì chúng biến một quá trình xử lý hàng loạt thành công việc chỉ với một cú nhấp chuột. "Tạo slug duy nhất" xử lý trường hợp khi hai tiêu đề khác nhau cùng thu gọn về một slug — "10 mẹo hàng đầu" và "10-mẹo hàng đầu" đều trở thành 10-meo-hang-dau — và thêm -2 cho cái thứ hai, -3 cho cái thứ ba, đồng thời rút ngắn phần gốc trước nếu hậu tố đẩy nó vượt qua độ dài tối đa của bạn. Việc có hai trang cùng dùng một địa chỉ là vấn đề giải quyết ngay trên danh sách này sẽ ít tốn kém hơn nhiều so với việc bắt lỗi trong CMS của bạn. Tính năng "Lấy slug từ URL đã dán" hoạt động theo hướng ngược lại: dán một liên kết đầy đủ và công cụ sẽ lấy phần cuối cùng của đường dẫn, loại bỏ chuỗi truy vấn và bất kỳ đuôi .html hay .php nào, đồng thời giải mã percent-encoding, nên một liên kết Wikipedia kết thúc bằng %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 sẽ trở lại thành lviv thay vì một chuỗi chữ số hex. Nó chỉ kích hoạt khi toàn bộ dòng là một liên kết, vì vậy một địa chỉ được trích dẫn bên trong một câu sẽ không bị thay đổi.

Tại sao nên chọn trình tạo slug này?

Slug cần thiết ở bất kỳ nơi nào trang web cần có một địa chỉ dễ đọc. Blog hay trang web tin tức sẽ chuyển đổi mọi tiêu đề bài viết thành slug, và đây chính là trường hợp công cụ này được thiết kế để phục vụ: dán các tiêu đề của cả tuần, nhận lại URL của tuần đó. Cửa hàng trực tuyến cũng làm tương tự đối với tên sản phẩm và danh mục, thường là làm hàng loạt sau mỗi lần nhập dữ liệu, và thường là trong một ngôn ngữ mà bảng chữ cái không thể đặt vừa vào địa chỉ. Tài liệu và kho kiến thức cũng tạo ra các neo (anchor) và tên tệp theo cùng một cách. Xa hơn các địa chỉ web, chuỗi ký tự sạch gọn đó cũng chính là thứ bạn cần cho một tên tệp không bị lỗi trên một hệ điều hành khác, khóa cơ sở dữ liệu để con người có thể đọc trong log, tên nhánh, tên ảnh trong thư viện media, hoặc mã định danh của một mục trong trình tạo trang web tĩnh. Bất cứ nơi nào một tên mà con người đọc được phải tồn tại khi đưa vào một trường do máy đọc, đó là nơi slug thuộc về.

Vài giới hạn cũng đáng để bạn biết trước khi đặt niềm tin vào công cụ. Đây là trình tạo, không phải công cụ xác thực: nó sẽ không kiểm tra xem slug đã được sử dụng trên trang web của bạn hay chưa, vì nó không có ý niệm nào về nội dung trang web của bạn — tính duy nhất mà nó đảm bảo chỉ nằm trong giới hạn danh sách bạn đang xử lý. Các redirect cũng là việc của bạn; việc thay đổi slug của một trang đã xuất bản sẽ làm hỏng địa chỉ cũ của nó, và đó là quyết định cho CMS của bạn chứ không phải của công cụ này. Tùy chọn "Lưu vào tệp" sẽ ghi ra văn bản thuần, không phải CSV hay JSON. Chế độ cắt dòng tự động sẽ đưa ra phán đoán về dấu phẩy đúng trong hầu hết mọi trường hợp nhưng không phải trong tất cả, đó chính là lý do vì sao "Chia dữ liệu đầu vào bằng" cho phép bạn vô hiệu hóa nó. Và chuyển ngữ là một quy ước thay vì là dịch thuật — München biến thành muenchen chứ không phải Munich — vậy nên khi một trang đã có tên gọi phổ biến trong ngôn ngữ đích, tên đó sẽ là một slug tốt hơn bất kỳ dạng chuyển đổi tự động nào từ bản gốc.

FAQ

Làm thế nào để tôi tạo URL slug?

Dán tiêu đề của bạn vào "Văn bản cần chuyển đổi" và nhấn "Tạo". Kết quả xuất hiện cùng một nút sao chép bên cạnh, được chuyển đổi với những tùy chọn hầu hết các trang web muốn: chữ thường, gạch ngang giữa các từ, xóa từ khóa nối và chuyển ngữ các chữ cái không phải tiếng Latin. Mỗi tính năng đó là một công tắc bạn có thể thay đổi, và "Tùy chọn nâng cao" chứa phần còn lại — ký tự phân cách, độ dài tối đa, danh sách từ khóa dừng và quy tắc chuyển ngữ.

Tôi có thể chuyển đổi toàn bộ danh sách tiêu đề cùng lúc không?

Có. Bạn có thể dán tối đa 500.000 ký tự — khoảng vài nghìn tiêu đề — hoặc lấy chúng trực tiếp từ tệp bằng nút "Tải từ tập tin" bên cạnh ô nhập, công cụ sẽ đọc tệp ngay trên trình duyệt mà không tải lên. Mỗi dòng trở thành slug riêng, được đánh số và hiển thị tiêu đề gốc ở trên để bạn dễ dàng đối chiếu. "Chia dữ liệu đầu vào bằng" kiểm soát cách chia danh sách, "Định dạng kết quả" quyết định danh sách trả về dưới dạng từng dòng, "Phân cách bằng khoảng trắng" hay "Phân cách bằng dấu phẩy", và cả "Sao chép tất cả" lẫn "Lưu vào tệp" đều xuất ra toàn bộ kết quả.

Trình tạo xử lý các chữ cái tiếng Kirin và chữ có dấu như thế nào?

Nó chuyển đổi chúng sang bảng mã ASCII theo hai lớp. Bất kỳ hệ thống chữ viết nào — tiếng Kirin, Hy Lạp, Ả Rập, tiếng Trung, tiếng Latin có dấu — đều được xử lý bằng một thư viện chuyển ngữ chung, đó là tính năng mà "Tự động (mọi ngôn ngữ)" sử dụng. Bên cạnh đó là các bảng làm thủ công cho các ngôn ngữ có kết quả chung không khớp với những gì các quốc gia đó thực sự sử dụng; danh sách trong menu "Chuyển ngữ từ" có liệt kê những ngôn ngữ đã được hỗ trợ bảng riêng. Hãy chọn một và bảng của ngôn ngữ đó sẽ tải lên, với từng chữ cái đều có thể chỉnh sửa. Lớp chung đã hỗ trợ xử lý ngôn ngữ này một cách chính xác, bao gồm cả dấu thanh và chữ đ — Việt Nam trở thành viet-nam, Hà Nội trở thành ha-noi, Đà Nẵng trở thành da-nang, phở bò trở thành pho-bo, nguyễn trở thành nguyen, đường trở thành duong. Đó chính xác là cách các địa chỉ được viết bằng ngôn ngữ này.

Chuẩn chuyển ngữ nào được dùng cho tiếng Ukraina?

Nghị quyết số 55 ngày 27 tháng 1 năm 2010 của Hội đồng Bộ trưởng — chuẩn được dùng trên hộ chiếu Ukraina. Nó bao gồm những phần dễ sai: зг thành zgh để phân biệt với ж, các ký tự є, ї, й, ю và я mang một hình thức khi đứng đầu từ và hình thức khác khi đứng giữa, dấu phẩy trên và dấu mềm bị loại bỏ mà không ngắt thành từ mới, nhờ vậy Знам'янка thành znamianka chứ không phải znamyanka. Có sẵn một biến thể thứ hai với ya, yu và yi dùng ở mọi vị trí nếu bạn thích hình thức đơn giản hơn.

Tôi có thể thay đổi cách chuyển đổi của một ký tự cụ thể không?

Có. Mở "Quy tắc chuyển ngữ" và mỗi ký tự trong bảng là một trường văn bản: bạn có thể gõ bất kỳ nội dung nào bạn muốn thay thế, và kết quả sẽ cập nhật ngay khi bạn gõ. Nếu xóa trắng một trường thì ký tự đó sẽ bị loại bỏ hoàn toàn. Trình duyệt của bạn sẽ ghi nhớ các sửa đổi này cho lần sau, và nút "Đặt lại quy tắc về mặc định" sẽ khôi phục lại bảng chuẩn bất cứ lúc nào bạn muốn.

Từ khóa dừng là gì và tôi có nên xóa chúng không?

Chúng là các từ nối ngắn — a, the, and, of, for — khiến slug dài ra mà không làm nó rõ nghĩa hơn. Tính năng xóa các từ này được bật theo mặc định và danh sách dưới phần "Từ khóa dừng" hoàn toàn có thể chỉnh sửa, nó được điền sẵn một danh sách tiếng Anh cùng với một danh sách cho ngôn ngữ của trang bạn đang truy cập. Hãy nhìn nhận thực tế về lợi ích của nó: việc này tạo ra một địa chỉ ngắn gọn và gọn gàng hơn, chứ không giúp vị trí tìm kiếm tốt hơn. Nếu tiêu đề chỉ gồm toàn từ khóa dừng, công cụ sẽ thông báo thay vì trả về một slug rỗng.

Tôi nên sử dụng dấu gạch ngang hay dấu gạch dưới trong slug?

Nên dùng gạch ngang, trừ khi hệ thống của bạn có yêu cầu khác. Google coi gạch ngang là dấu cách giữa các từ, còn dấu gạch dưới là ký tự nối kết chúng, vậy nên my_first_post sẽ được đọc là một từ dài trong khi my-first-post được đọc thành ba từ. Đó là lý do trình tạo chọn dấu gạch ngang làm mặc định; "Ký tự phân cách trong slug" vẫn cung cấp tùy chọn "Dấu gạch dưới (_)" cho những hệ thống cần nó.

Một URL slug nên dài bao nhiêu?

Chỉ cần đủ ngắn để đọc sơ qua là hiểu — vài từ đầu đã chứa đựng ý chính và phần còn lại thường chỉ là đuôi câu. Số nằm cạnh mỗi kết quả là độ dài ký tự của nó và sẽ chuyển màu đỏ khi vượt qua ngưỡng 60, điểm mà kết quả tìm kiếm bắt đầu bị cắt bớt và sẽ khó khăn khi dán vào tin nhắn. "Độ dài tối đa" tạo ra một giới hạn cứng từ 10 đến 200 ký tự, và mặc định là 80.

Tính năng cắt bớt có chia nửa từ khi slug quá dài không?

Không. Khi slug vượt quá độ dài tối đa, engine sẽ lùi lại từ hoàn chỉnh cuối cùng nằm vừa giới hạn và cắt ở đó, nên slug bị cắt bớt vẫn giữ nguyên các từ thay vì kết thúc ở giữa một âm tiết. Điều tương tự cũng áp dụng khi thêm hậu tố số vào một từ bị lặp lại: phần gốc được cắt ngắn trước để slug hoàn chỉnh vẫn nằm trong giới hạn của bạn.

Chuyện gì xảy ra nếu hai tiêu đề sinh ra cùng một slug?

Tùy chọn "Tạo slug duy nhất" được bật mặc định và sẽ xử lý việc đó: lần xuất hiện đầu tiên giữ nguyên slug gốc, lần thứ hai nhận -2, lần thứ ba nhận -3, v.v. Nó chặn trường hợp phổ biến khi hai tiêu đề khác nhau cùng thu gọn lại thành một kết quả — 10 mẹo hàng đầu và 10-mẹo hàng đầu đều trở thành 10-meo-hang-dau. Khi tắt tùy chọn này, bạn sẽ nhận được đầu ra dạng thô với kết quả trùng lặp. Lưu ý là tính duy nhất chỉ được đảm bảo bên trong đợt bạn vừa xử lý; công cụ không thể biết nội dung nào đã có sẵn trên trang web của bạn.

Tôi có thể dán URL thay vì tiêu đề không?

Có. Tính năng "Lấy slug từ URL đã dán" được bật mặc định, khi một dòng chứa trọn vẹn một liên kết, công cụ sẽ tách lấy phần cuối của đường dẫn, loại bỏ chuỗi truy vấn cùng các đuôi .html hoặc .php, rồi giải mã percent-encoding — nhờ thế địa chỉ Wikipedia kết thúc bằng %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 sẽ trả lại kết quả lviv thay vì một dải ký tự hex. Nó chỉ hoạt động nếu toàn bộ dòng là một đường link, nên nếu URL được trích dẫn giữa câu, nó sẽ bị coi như đoạn chữ bình thường.

Dữ liệu của tôi có bị gửi lên máy chủ không?

Không. Việc chuyển đổi chạy trên trình duyệt của bạn dưới dạng JavaScript cục bộ. Không có dữ liệu nào tải lên, không có log nào bị ghi, và khi tải xong trang web sẽ tiếp tục hoạt động dù không kết nối mạng. Những tiêu đề chưa công bố, tên sản phẩm nội bộ và công việc của khách hàng sẽ chỉ lưu trên máy tính của bạn, đó là lý do thực tiễn để ưu tiên một công cụ cục bộ so với các công cụ trên máy chủ cho công việc đặc thù này.

Tại sao câu đơn của tôi lại tách thành hai slug?

Vì nó chứa dấu phẩy và "Chia dữ liệu đầu vào bằng" đang ở chế độ "Tự động phát hiện". Chế độ này xem dấu ngắt dòng là phân cách chắc chắn còn dấu phẩy là phân cách khả thi, nó chỉ ngắt ở dấu phẩy nếu các thành phần trong dòng giống các giá trị độc lập — dạng số lẻ kiểu như giá 3,5 triệu đồng hoặc câu có dấu hai chấm sẽ cố ý được giữ nguyên khối. Khi tiêu đề vẫn bị ngắt dòng ngoài ý muốn, bạn hãy chỉnh "Chia dữ liệu đầu vào bằng" thành "Dòng mới", khi đó đầu vào chỉ ngắt dòng tại nơi bạn đã ấn Enter.