Chương 10: URL, Domain, Routing & URL Rewrite

1. URL là gì?

URL (Uniform Resource Locator) là địa chỉ định vị một tài nguyên cụ thể trên Internet. Mỗi URL trên Web là duy nhất — không có hai tài nguyên khác nhau nào cùng chia sẻ một URL hoàn toàn giống nhau.

Cấu trúc tổng quát:

scheme://host:port/path?query_string#fragment

Ví dụ đầy đủ:

https://www.uit.edu.vn:80/index.html?lang=vi#section1

2. Cấu trúc chi tiết của URL

2.1 Scheme (Giao thức)

Scheme là phần đầu tiên của URL, kết thúc ngay trước dấu :. Nó xác định phương thức giao tiếp mà trình duyệt dùng để trao đổi dữ liệu với server.

SchemeÝ nghĩa
httpHyperText Transfer Protocol — giao tiếp web thông thường
httpsHTTP Secure — mã hóa bằng TLS/SSL
ftpFile Transfer Protocol — truyền tải file
mailtoGửi email

2.2 Authority (Thẩm quyền)

Phần còn lại sau :// được gọi là Authority, bao gồm:

  • www (World Wide Web prefix) — có thể có hoặc không có (non-www)
  • Domain — tên miền, ví dụ: uit.edu.vn
  • Port — cổng giao tiếp, ví dụ: 80 (HTTP), 443 (HTTPS)

2.3 Các thành phần bổ sung

Thành phầnKý hiệuVí dụMô tả
Path//thongbao/bai-vietĐường dẫn đến tài nguyên trên server
Query String??id=5&lang=viTham số truyền lên server
Fragment##section2Điểm neo trong trang, xử lý ở phía client
https://www.example.com:443/blog/post?id=10&lang=vi#comments
│─────│  │──────────────│ │──│ │────────│ │──────────│ │──────│
scheme      host/domain  port   path     query string  fragment

3. Domain (Tên miền)

3.1 Định nghĩa

Domain là tên miền đại diện cho một địa chỉ IP, giúp người dùng dễ nhớ và dễ truy cập hơn so với việc phải gõ địa chỉ IP thuần túy.

Ví dụ: Địa chỉ IP 74.125.200.113 có tên miền là google.com

Bản chất, khi bạn gõ google.com vào trình duyệt, hệ thống DNS (Domain Name System) sẽ tra cứu và dịch tên miền đó thành địa chỉ IP tương ứng để kết nối đến đúng server.

3.2 Phân loại tên miền

www.uit.edu.vn
         │  │
         │  └── ccTLD: Country Code Top-Level Domain (.vn = Việt Nam)
         └───── SLD: Second-Level Domain (.edu = giáo dục)
LoạiVí dụÝ nghĩa
Quốc tế.com, .net, .orgThương mại, mạng, tổ chức
Quốc gia.vn, .sg, .jpViệt Nam, Singapore, Nhật Bản
Chuyên ngành.edu, .gov, .ioGiáo dục, chính phủ, công nghệ

3.3 Đăng ký tên miền

Tên miền cần được đăng ký thông qua các nhà cung cấp uy tín. Tại Việt Nam có thể đăng ký tại:


4. Semantic URLs (Friendly URLs)

4.1 Định nghĩa

Semantic URL (hay Friendly URL) là URL được thiết kế sao cho nội dung của nó mô tả rõ ràng trang mà nó trỏ đến, thay vì chứa các tham số kỹ thuật khó đọc.

So sánh:

# URL không thân thiện (dynamic URL)
https://www.example.com/subfolder/subfolder-2/AxJSjdS.html

# URL thân thiện (semantic URL)
https://www.example.com/tu-khoa-can-seo-abc.html

4.2 Lợi ích

  • Dễ nhớ, dễ đọc cho người dùng
  • Tăng thứ hạng SEO vì công cụ tìm kiếm hiểu được nội dung qua URL
  • Che giấu công nghệ nội bộ — người dùng không thấy ?id=, .php, .aspx, v.v.
  • Tăng tỷ lệ nhấp (CTR) khi URL xuất hiện trong kết quả tìm kiếm

5. URL và SEO

5.1 Các tiêu chí URL chuẩn SEO

5.2 Tối ưu nội dung URL

Từ khóa: Từ khóa nên xuất hiện ngay đầu URL, tránh đặt ở cuối vì các công cụ tìm kiếm đánh trọng số cao hơn cho phần đầu URL.

Nội dung mô tả: URL phải ngắn gọn nhưng đủ mô tả — người dùng nhìn vào URL phải đoán được trang đó nói về chủ đề gì.

Stop words: Hạn chế các từ phổ thông như and, the, of, một, , của trong URL vì các công cụ tìm kiếm thường bỏ qua chúng.

5.3 Tối ưu cấu trúc URL

# Sai
https://example.com/san_pham/lap_top?id=100&cat=may_tinh

# Đúng
https://example.com/san-pham/laptop-asus-x507

6. Rewrite URL

6.1 Định nghĩa

URL Rewriting là kỹ thuật cho phép biến đổi URL từ dạng này sang dạng khác mà không thay đổi logic xử lý phía server. Còn được gọi là Short URLs, Fancy URLs.

# Trước khi rewrite (URL động, xấu)
http://www.example.com/Blogs/modules.php?name=News&op=viewst&sid=696

# Sau khi rewrite (URL tĩnh, đẹp)
http://www.example.com/Blogs/News/viewst/696.html

6.2 Lợi ích

  • Tạo URL thân thiện với người dùng và Search Engine
  • Tăng cường bảo mật bằng cách ẩn cấu trúc nội bộ (tên bảng, tham số truy vấn, công nghệ sử dụng)
  • Dễ chia sẻ, dễ nhớ

7. Slug

7.1 Định nghĩa

Slug là một chuỗi ký tự được tạo ra từ tiêu đề hoặc nội dung, dùng làm phần định danh trong URL. Slug đóng vai trò cầu nối giữa nội dung có dấu, có ký tự đặc biệt và một URL hợp lệ, thân thiện với SEO.

Tiêu đề: "How to Create a Website with HTML and CSS"
Slug:     "how-to-create-a-website-with-html-and-css"

7.2 Đặc điểm của Slug

Đặc điểmMô tả
Chữ thườngToàn bộ chuyển sang lowercase
Không dấuLoại bỏ dấu tiếng Việt và ký tự đặc biệt
Dùng dấu -Thay thế khoảng trắng bằng gạch ngang
Duy nhấtMỗi slug phải unique trong hệ thống

Ví dụ thực tế từ UIT:

https://www.uit.edu.vn/uit-long-trong-chuc-le-ky-niem-41-nam-ngay-nha-giao-viet-nam-2011

7.3 Hàm tạo Slug (C#)

public static string GenerateSlug(string title)
{
    // Thay tất cả ký tự không phải chữ cái, số, hoặc dấu gạch ngang bằng "-"
    string slug = Regex.Replace(title, @"[^a-zA-Z0-9-]", "-");

    // Loại bỏ các dấu gạch ngang liên tiếp (ví dụ: "---" → "-")
    slug = Regex.Replace(slug, @"-{2,}", "-");

    // Xóa dấu gạch ngang ở đầu và cuối, chuyển thành chữ thường
    slug = slug.Trim('-').ToLower();

    return slug;
}

8. URL Routing (Định tuyến URL)

8.1 Khái niệm

URL Routing là cơ chế ánh xạ một URL yêu cầu đến một đoạn code xử lý cụ thể (controller/action trong MVC, hoặc handler trong Express.js). Thay vì URL phải khớp chính xác với đường dẫn file vật lý trên server, routing cho phép định nghĩa quy tắc linh hoạt.

flowchart LR A["Người dùng gõ URL"] --> B["Routing Engine"] B --> C{Khớp rule nào?} C --> D["Controller A / Action X"] C --> E["Controller B / Action Y"] C --> F["404 Not Found"]

8.2 Routing trong ASP.NET MVC

Trong ASP.NET MVC, các route được đăng ký trong file RouteConfig.cs:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Tham sốÝ nghĩa
nameTên định danh của route, phải duy nhất
urlPattern nhận dạng URL, dùng {} cho placeholder
controllerTên controller mặc định nếu không có trong URL
actionTên action mặc định
idTham số tùy chọn

Cách hoạt động:

URL: /Products/Details/5
→ controller = "Products"
→ action    = "Details"
→ id        = 5

URL: /   (không có gì)
→ controller = "Home"   (mặc định)
→ action    = "Index"   (mặc định)
→ id        = (không có)

8.3 Rewrite URL với ASP.NET MVC

Có thể tạo các route tùy chỉnh để ánh xạ URL đẹp về đúng controller:

// Route dạng: /hp-340s-i7.p-1000
routes.MapRoute(
    name: "Product",
    url: "{alias}.p-{id}",
    defaults: new { controller = "Products", action = "Details", id = UrlParameter.Optional },
    namespaces: new string[] { "WebApplication1.Controllers" }
);

// Route dạng: /products-hp-340s-i7
routes.MapRoute(
    name: "ProductDetail",
    url: "products-{slug}",
    defaults: new { controller = "Products", action = "DetailsBySlug" },
    namespaces: new string[] { "WebApplication1.Controllers" }
);

Kết quả:

https://mywebsite.com/hp-340s-i7.p-1000
https://mywebsite.com/products-hp-340s-i7

8.4 Rewrite URL với Node.js (Express.js)

Trong Express.js, routing được định nghĩa trực tiếp trong code:

app.get('/products/:slug', (req, res) => {
    const slug = req.params.slug; // Lấy slug từ URL

    // Truy vấn cơ sở dữ liệu theo slug
    const product = getProductBySlug(slug);

    res.send(`Product Details: ${product.name}`);
});

function getProductBySlug(slug) {
    // Giả lập truy vấn database
    return {
        slug: slug,
        name: `Product ${slug}`,
    };
}

Sử dụng trong HTML:

<a href="/products/laptop-asus-x507">Laptop ASUS X507</a>

Kết quả URL:

https://mywebsite.com/products/hp-340s-i7

:slug trong Express là route parameter — bất kỳ chuỗi nào nằm ở vị trí đó trong URL đều được gán vào req.params.slug.


9. Facebook Open Graph

9.1 Định nghĩa

Open Graph là giao thức do Facebook phát triển, cho phép bất kỳ trang web nào kiểm soát cách nội dung hiển thị khi được chia sẻ lên mạng xã hội (Facebook, Zalo, LinkedIn, v.v.).

Khi bạn dán một link vào Facebook, Facebook sẽ crawl URL đó và đọc các thẻ <meta> Open Graph để lấy tiêu đề, mô tả và ảnh preview.

9.2 Các thẻ Open Graph cơ bản

<meta property="og:title"       content="Tiêu đề của trang" />
<meta property="og:description" content="Mô tả ngắn về nội dung" />
<meta property="og:image"       content="https://example.com/image.jpg" />
<meta property="og:url"         content="https://example.com/bai-viet" />
<meta property="og:type"        content="website" />
ThẻÝ nghĩa
og:titleTiêu đề hiển thị khi share
og:descriptionMô tả ngắn bên dưới tiêu đề
og:imageẢnh thumbnail preview
og:urlURL chính tắc của trang
og:typeLoại nội dung: website, article, product, v.v.

10. Cẩm nang SEO cơ bản

10.1 Bảng tổng hợp

Tiêu chíMô tả
Tối ưu nội dungTiêu đề và mô tả hấp dẫn, chính xác; nội dung chất lượng; từ khóa phù hợp
Tối ưu URLURL ngắn, dễ đọc, chứa từ khóa, tránh ký tự đặc biệt
Optimize hình ảnhẢnh chất lượng, nén ảnh, dùng thuộc tính alt mô tả
Thẻ metaSử dụng <meta name="description">, Open Graph, v.v.
Xây dựng liên kếtInternal links giữa các trang liên quan; backlinks từ trang uy tín
Sitemap XMLTạo sitemap.xml gửi lên Google Search Console; cấu hình robots.txt
Theo dõi & kiểm traGoogle Analytics, Google Search Console, Google PageSpeed Insights
Mạng xã hộiChia sẻ nội dung để tăng tương tác và reach
Mobile friendlyThiết kế responsive; kiểm tra bằng Mobile-Friendly Test

10.2 Công cụ tham khảo