Trình Tạo URL
Xây dựng URL một cách tương tác với scheme, host, đường dẫn, tham số truy vấn và fragment.
Cách hoạt động
- Chọn scheme và host: chọn một giao thức (http, https, ftp) và nhập tên miền mục tiêu.
- Thêm đường dẫn và tham số truy vấn: gõ đường dẫn, sau đó thêm các cặp khóa-giá trị cần thiết.
- Thêm fragment (tùy chọn): thêm một mỏ neo hoặc hash trỏ đến một phần cụ thể của trang.
- Sao chép URL đã ráp nối: URL được tạo cập nhật trực tiếp. Sao chép nó để sử dụng trong mã, marketing hoặc kiểm thử.
Tại sao sử dụng trình xây dựng URL?
Lắp ráp URL bằng tay dễ gây lỗi, một dấu gạch chéo bị thiếu, một khoảng trắng không được mã hóa hoặc một tham số truy vấn bị mất có thể phá vỡ các liên kết sâu, các cuộc gọi API hoặc chuyển hướng. Trình xây dựng URL này đảm bảo rằng mỗi thành phần được đặt và mã hóa đúng, tạo ra một URL hợp lệ mỗi lần. Nó lý tưởng để tạo các liên kết marketing được theo dõi, xây dựng các điểm cuối API trong quá trình phát triển, lắp ráp các liên kết sâu cho các chiến dịch email và ghi lại các cấu trúc URL.
Tính năng
- Nhiều scheme: http, https và ftp được hỗ trợ theo mặc định.
- Mã hóa tự động: khoảng trắng và ký tự đặc biệt trong giá trị tham số được mã hóa đúng cho URL.
- Nhiều tham số truy vấn: thêm bao nhiêu cặp khóa-giá trị cần thiết.
- Sao chép vào bộ nhớ tạm: sao chép một cú nhấp toàn bộ URL được tạo.
- Xem trước trực tiếp: URL cập nhật khi bạn gõ để thấy kết quả ngay lập tức.
Câu hỏi thường gặp
Các phần của một URL là gì?
Một URL đầy đủ bao gồm: scheme (https), host (example.com), một port tùy chọn (:8080), đường dẫn (/api/v1), truy vấn (?key=value) và fragment (#section). Trình xây dựng này bao quát mọi thành phần.
Nó có xử lý các ký tự đặc biệt không?
Có. Khoảng trắng, chữ cái có dấu, ký hiệu và các ký tự không phải ASCII khác trong giá trị tham số được mã hóa tự động để URL kết quả hợp lệ trong bất kỳ trình duyệt hoặc máy khách API nào.
Các tham số URL có ảnh hưởng đến SEO không?
Các tham số theo dõi (như thẻ UTM) thường không ảnh hưởng đến xếp hạng tìm kiếm tự nhiên. Để tránh các hình phạt nội dung trùng lặp khi nhiều URL được gắn thẻ tồn tại cùng nhau, hãy đảm bảo thẻ canonical của bạn trỏ đến phiên bản sạch của mỗi trang.
Giải phẫu của một URL, từng thành phần một
Ngữ pháp định nghĩa mọi URL trên web sống trong RFC 3986 «Uniform Resource Identifier (URI): Generic Syntax» (Berners-Lee, Fielding, Masinter, tháng 1 năm 2005). Các trình duyệt thực sự sử dụng một biến thể hơi khoan dung hơn được định nghĩa trong WHATWG URL Living Standard. Cả hai đều đồng ý về các thành phần:
- Lược đồ,
https,http,ftp,mailto,data,tel,sms,magnet, cùng với các lược đồ ứng dụng tùy chỉnh (myapp://). RFC 3986 yêu cầu chữ thường; WHATWG chuẩn hóa. Đăng ký Lược đồ URI của IANA có danh sách chính thức các lược đồ đã đăng ký. - Quyền,
userinfo@host:port. Dạng thông tin xác thực nhúnguser:password@bị phản đối vì bảo mật: Chrome 64 (tháng 1 năm 2018) chặn tải tài nguyên phụ với thông tin xác thực trong URL vì chúng cho phép các thủ thuật lừa đảo. - Host, một tên miền hoặc IP literal. Tên miền quốc tế hóa như
президент.рфđược chuyển đổi sang ASCII qua Punycode (RFC 3492, tháng 3 năm 2003): ví dụ đó trở thànhxn--d1abbgf6aiiy.xn--p1ai. Trình duyệt thực hiện chuyển đổi minh bạch để hiển thị. - Cổng, chỉ bao gồm khi không phải mặc định cho lược đồ. Mặc định: 80 (http), 443 (https), 21 (ftp), 22 (ssh), 25 (smtp), 5432 (postgres), 3306 (mysql), 6379 (redis).
- Đường dẫn, các đoạn được phân tách bằng dấu gạch chéo. Mỗi đoạn mã hóa phần trăm bất cứ thứ gì bên ngoài tập
pcharđược định nghĩa trong RFC 3986 §3.3. Các đoạn dấu chấm.và..có ngữ nghĩa loại bỏ (§5.2.4). - Truy vấn, theo quy ước các cặp khóa-giá trị được phân tách bằng
&, nhưng RFC 3986 chỉ nói «chuỗi không rõ ràng sau?». Quy ước được chính thức hóa trong thuật toánapplication/x-www-form-urlencodedcủa WHATWG. - Đoạn, mọi thứ sau
#. Không bao giờ được gửi đến máy chủ. Được sử dụng bởi các bộ định tuyến ứng dụng trang đơn, các liên kết neo, và các token luồng ngầm OAuth.
Mã hóa phần trăm: bẫy + so với %20
RFC 3986 §2.3 định nghĩa các ký tự không dành riêng không bao giờ cần mã hóa: A-Z a-z 0-9 - . _ ~. Mọi thứ khác, khi xuất hiện dưới dạng dữ liệu bên trong một thành phần URL, trở thành %XX nơi XX là giá trị hex của byte. Các ký tự UTF-8 nhiều byte mở rộng thành nhiều bộ ba phần trăm: é (U+00E9, UTF-8 C3 A9) mã hóa thành %C3%A9. Cạm bẫy kinh điển là ký tự khoảng trắng: trong một đường dẫn hoặc đoạn URL thông thường, khoảng trắng mã hóa thành %20; trong chuỗi truy vấn được mã hóa biểu mẫu (thuật toán application/x-www-form-urlencoded được chia sẻ bởi các biểu mẫu HTML và bộ tuần tự hóa chuỗi truy vấn WHATWG), khoảng trắng mã hóa thành +. Một máy chủ giải mã dữ liệu biểu mẫu chuyển đổi + trở lại thành khoảng trắng; một máy chủ coi truy vấn như một URI chung không. Trộn lẫn hai quy ước âm thầm làm hỏng dữ liệu. Mẫu an toàn trong JavaScript: sử dụng new URLSearchParams cho truy vấn và encodeURIComponent cho các giá trị riêng lẻ; sự tuân thủ đặc tả được xử lý cho bạn.
Nơi bạn thực sự cần một trình xây dựng URL
- Liên kết tiếp thị được gắn thẻ UTM cho Google Analytics (Urchin Tracking Module, trong GA kể từ năm 2005): năm tham số chuẩn là
utm_source,utm_medium,utm_campaign,utm_content,utm_term, tất cả đều viết thường theo hướng dẫn của chính Google. - Yêu cầu ủy quyền OAuth 2.0 (RFC 6749, tháng 10 năm 2012): đặc tả bắt buộc
response_type,client_id,redirect_uri,scope,statelàm các tham số truy vấn trên điểm cuối ủy quyền. - Liên kết sâu di động: một lược đồ
app://mà OS định tuyến đến ứng dụng đã cài đặt của bạn thay vì trình duyệt, hoặc một Android App Link / iOS Universal Link được phục vụ từ tên miền của bạn. - Thử nghiệm client API:
https://api.example.com/v2/users?expand=projects&since=2024-01-01. Đánh máy thủ công những điều này liên tục thất bại ở bước «khoảng trắng bên trong một giá trị». - Bộ phá vỡ cache CDN:
?v=2026-05-12-1được thêm vào URL tài sản tĩnh để triển khai làm vô hiệu phiên bản đã lưu trong bộ nhớ đệm. Chuỗi truy vấn là một phần của khóa cache. - Dịch vụ chuyển đổi hình ảnh (Cloudinary, imgix, Cloudflare Images): chuyển đổi được mã hóa dưới dạng các tham số truy vấn hoặc đoạn đường dẫn. Một cuộc gọi điển hình trông giống như
?w=800&q=85&fm=webp. - Mẫu email nơi trang đích đọc các tham số qua JS, thường kết hợp các thẻ UTM với một
tokenhoặcuidduy nhất để theo dõi mỗi người nhận.
Sai lầm phổ biến
- Quên mã hóa
&bên trong một giá trị. Một giá trị «mèo & chó» được thả ngây thơ vào?loài=mèo & chótrở thành một khóaloàivới giá trịmèocộng với một khóa rỗng lạc lối. Luôn chuyển quaencodeURIComponent. - Mã hóa kép. Gọi
encodeURIComponenttrên một chuỗi đã được mã hóa biến%20thành%2520. Dễ dàng khi một giá trị đi qua hai hệ thống mà mỗi hệ thống «mã hóa phòng thủ». - Không khớp dấu gạch chéo cuối. RFC 3986 nói rằng
https://example.com/apivàhttps://example.com/api/là các tài nguyên khác nhau. Hầu hết các API REST đối xử với chúng giống nhau, nhưng một số trả về chuyển hướng 308; chọn một dạng chuẩn và ghi lại nó. - Trộn
+và%20. Chuỗi truy vấn được mã hóa biểu mẫu sử dụng+cho khoảng trắng; mã hóa phần trăm chung sử dụng%20. Một đường dẫn với+theo nghĩa đen tồn tại qua sao chép-dán nhưng thất bại khi một bộ giải mã biểu mẫu đọc nó. - Thông tin xác thực nhúng.
https://user:pass@example.combị phản đối và bị chặn cho tải tài nguyên phụ trong Chrome 64+. Sử dụng tiêu đềAuthorization. - Lừa đảo IDN. Cyrillic «а» (U+0430) trông giống hệt Latin «a». Trình duyệt hiển thị Punycode khi một tên miền pha trộn các chữ viết, nhưng một URL được xây dựng thủ công trỏ đến
аpple.com(а Cyrillic) mở một trang web khác vớiapple.com. Sử dụng Punycode (xn--...) để bảo mật, hoặc gắn bó với ASCII. - Thêm
//sau các lược đồ không sử dụng nó.mailto:,tel:,sms:,magnet:tất cả bỏ qua//và đi thẳng đến đường dẫn.mailto:user@example.comđúng;mailto://...không đúng.
Thêm câu hỏi thường gặp
Độ dài tối đa của URL là bao nhiêu?
RFC 3986 không đặt giới hạn. Trong thực tế: các trình duyệt giới hạn khoảng 2.000 ký tự cho thanh địa chỉ (Internet Explorer 11 là 2.083; Chrome và Firefox dung nạp lâu hơn nhưng cắt giảm hiển thị); hầu hết CDN và proxy giới hạn ở 4.096 hoặc 8.192; các máy chủ như Apache và Nginx mặc định ở 8.192 byte cho dòng yêu cầu. Nếu bạn cần hơn 2.000 ký tự, hãy chuyển sang body POST.
Tôi có thể bao gồm cùng một tham số truy vấn nhiều lần không?
Có. ?tag=red&tag=blue&tag=green là hợp lệ. Cách máy chủ diễn giải nó phụ thuộc vào framework: Express / Node.js phân tích thành req.query.tag = ['red', 'blue', 'green']; PHP cần quy ước dấu ngoặc ?tag[]=red&tag[]=blue; Rails phân tích thành một mảng nếu bạn sử dụng dấu ngoặc tag[]. Phương thức URLSearchParams.getAll('tag') luôn trả về tất cả các giá trị dưới dạng một mảng bất kể kiểu dấu ngoặc.
Các tham số truy vấn có ảnh hưởng đến SEO không?
Các tham số theo dõi (UTM, fbclid, gclid) thường không ảnh hưởng đến xếp hạng tìm kiếm tự nhiên. Rủi ro là lập chỉ mục nội dung trùng lặp: một URL được gắn thẻ và phiên bản sạch của nó trông như hai trang khác nhau đối với một trình thu thập thông tin. Cách khắc phục là một thẻ <link rel="canonical" href="clean-url"> chỉ mọi biến thể được gắn thẻ đến cùng một URL chuẩn.
Một Template URI là gì, và tôi có nên sử dụng nó không?
RFC 6570 (tháng 3 năm 2012) định nghĩa Template URI: một cú pháp cho các URL được tham số hóa với các trình giữ chỗ. Chúng được sử dụng trong các đặc tả OpenAPI / Swagger, JSON Hyper-Schema, và một số API HATEOAS. Đối với xây dựng URL hàng ngày, việc nối chuỗi đơn giản thông qua trình xây dựng này dễ hơn; Template URI tỏa sáng khi tài liệu hóa một bề mặt API và tạo SDK client.
Có gì được gửi đến máy chủ không?
Không. Mọi thành phần bạn nhập, mã hóa, và URL cuối cùng được xây dựng trong JavaScript của trình duyệt của bạn. Không có cuộc gọi mạng nào được thực hiện để lắp ráp URL. Mở tab Mạng trong DevTools và thử công cụ: bạn sẽ thấy không có yêu cầu đi ra trong quá trình xây dựng.