Khi nào tôi nên sử dụng dấu gạch chéo trong URL của mình?


282

Khi nào nên sử dụng dấu gạch chéo trong URL? Ví dụ: URL của tôi nên giống /about-us/hay thích /about-us?

Tôi hoàn toàn nhận thức được các vấn đề liên quan đến SEO - nội dung trùng lặp và điều kinh điển; Tôi đang cố gắng tìm ra cái nào tôi nên sử dụng trong bối cảnh phục vụ các trang một mình một cách chính xác .

Ví dụ, đồng nghiệp của tôi đang nghĩ rằng dấu gạch chéo ở cuối có nghĩa là "thư mục" - "thư mục", vì vậy đây không phải là một kiểu chính xác. Nhưng tôi nghĩ rằng cuối cùng không có dấu gạch chéo - nó cũng không hoàn toàn chính xác, bởi vì nó gần giống như một thư mục, nhưng nó cũng không phải là một tệp bình thường, mà là một tên tệp không có phần mở rộng.

Có một cách thích hợp để biết nên sử dụng?


Chém chém, nhưng theo tôi chủ yếu là thẩm mỹ. Xem và cảm nhận.
Eric Herlitz


4
Câu hỏi này được đặt ra như một trong những ưu tiên , và do đó dường như lạc đề vì chủ yếu dựa trên ý kiến . Tuy nhiên, như câu trả lời của tôi cho thấy, trên thực tế, đặt câu hỏi này là một vấn đề ưu tiên là một sai lầm: đây là một vấn đề XY và câu hỏi "thực tế" cơ bản có một câu trả lời kỹ thuật chính xác, và do đó không chủ yếu dựa trên ý kiến .
Raedwald

Các câu hỏi về loại URL nào Google thích không liên quan đến lập trình (như được đề cập trong wiki thẻ ) và không có chủ đề cho Stackoverflow.
Quentin

Tôi đã thực hiện một vài chỉnh sửa cho câu hỏi của bạn, vui lòng kiểm tra lại khi bạn có cơ hội làm điều đó. Cảm ơn :)
Tim Post

Câu trả lời:


131

Theo ý kiến ​​cá nhân của tôi dấu gạch chéo được sử dụng sai.

Về cơ bản, định dạng URL đến từ cùng một định dạng tệp và thư mục UNIX, sau này, trên các hệ thống DOS và cuối cùng, được điều chỉnh cho web.

Một URL điển hình cho cuốn sách này trên hệ điều hành giống Unix sẽ là đường dẫn tệp như tệp: ///home/username/RomeoAndJuliet.pdf, xác định sách điện tử được lưu trong tệp trên đĩa cứng cục bộ.

Nguồn: Wikipedia: Mã định danh tài nguyên thống nhất

Một nguồn tốt khác để đọc: Wikipedia: URI Scheme

Theo RFC 1738, đã xác định URL vào năm 1994, khi tài nguyên chứa tham chiếu đến các tài nguyên khác, họ có thể sử dụng các liên kết tương đối để xác định vị trí của tài nguyên thứ hai như muốn nói, "ở cùng một nơi với tài nguyên này ngoại trừ tương đối sau con đường". Người ta đã nói rằng các URL tương đối như vậy phụ thuộc vào URL ban đầu chứa cấu trúc phân cấp dựa trên đó liên kết tương đối dựa trên đó và các lược đồ URL của tệp ftp, http và tệp là ví dụ về một số có thể được coi là phân cấp, với các thành phần của hệ thống phân cấp được phân tách bằng "/".

Nguồn: Trình định vị tài nguyên thống nhất Wikipedia (URL)

Cũng thế:

Đó là câu hỏi chúng ta thường nghe. Hướng tới câu trả lời! Về mặt lịch sử, thông thường các URL có dấu gạch chéo để chỉ ra một thư mục và những URL không có dấu gạch chéo để biểu thị một tệp:

http://example.com/foo/ (với dấu gạch chéo, thông thường là một thư mục)

http://example.com/foo (không có dấu gạch chéo, thông thường là một tệp)

Nguồn: Blog trung tâm Google WebMaster - Chém hay không chém

Cuối cùng:

  1. Một dấu gạch chéo ở cuối URL làm cho địa chỉ trông "đẹp".

  2. Một URL không có dấu gạch chéo ở cuối và không có phần mở rộng trông hơi "lạ".

  3. Bạn sẽ không bao giờ đặt tên cho tệp CSS của mình (ví dụ) http://www.sample.com/stylesheet/ phải không?

NHƯNG tôi là người đề xuất các thực tiễn tốt nhất về web bất kể môi trường. Nó có thể rất khó khăn và không rõ ràng, giống như bạn đã nói về URL không có phần mở rộng.


1
Điều này thật kỳ lạ, bạn không thể đặt tên tệp là "biểu định kiểu /" - và dấu gạch chéo hoặc không dấu gạch chéo là các tài nguyên hoàn toàn khác nhau trên máy chủ, bất kể URL trông như thế nào
nico gawenda

10
@nicogawenda, .htaccess có thể thực hiện tất cả các loại phép thuật;) CSS của bạn thực sự có thể là một tệp php!
rmorse

4
Các máy chủ Web thường được thiết lập theo mặc định để phục vụ index.html(hoặc tương tự như tên tập tin) khi một thư mục được truy cập, vì vậy /foo//foo/index.htmlnếu không có sự lộn xộn thêm. Ngoài ra, trước đây, các trình duyệt sẽ gắn /vào tên miền, nhưng chúng (Firefox, Chrome, Opera) đã thay đổi để bỏ qua /khi truy cập trang chủ.
0b10011

4
Tôi đồng ý với @bfrohs. Chắc chắn các trang mặc định cho các thư mục trái với nguyên tắc này. Nếu chúng ta thực thi 'trailing slash = thư mục', thì chắc chắn tất cả các url trỏ đến một thư mục phải trả về danh sách thư mục hoặc phản hồi http bị cấm 403.
Marvin

11
Tôi không chắc liệu các điểm số 1 và 2 trong phần "Cuối cùng" có còn chính xác hay không. Trong những năm qua kể từ khi điều này ban đầu được viết, thị hiếu đã thay đổi. Tôi đã không nghiên cứu chi tiết này, nhưng dường như trên các trang web mới hơn, nó phổ biến hơn và "đẹp hơn" để bỏ qua dấu gạch chéo.
tàu cao tốc

171

Nó không phải là một câu hỏi về sở thích. /base/base/có ngữ nghĩa khác nhau. Trong nhiều trường hợp, sự khác biệt là không quan trọng. Nhưng nó rất quan trọng khi có URL tương đối.

  • childliên quan đến /base//base/child.
  • childliên quan đến /baselà (có lẽ đáng ngạc nhiên) /child.

5
Bài viết hữu ích đi sâu vào vấn đề này: cdivilly.wordpress.com/2014/03/11/ mẹo
Hephaestus

3
Vâng, tôi nghĩ điều này, cùng với SEO, là những điều quan trọng nhất cho câu hỏi này.
dùng2875289

Chỉ gặp vấn đề này khi sử dụng .Net Uri.MakeRelativeUri. Kết quả phản ánh chính xác những gì bạn nói. Tôi đã khắc phục vấn đề bằng cách thêm dấu gạch chéo vào cơ sở của mình Uri.
julealgon

61

Tôi luôn ngạc nhiên về việc sử dụng rộng rãi các dấu gạch chéo trên các URL không có thư mục (WordPress trong số những người khác). Điều này thực sự không nên là một trong hai hoặc tranh luận bởi vì đặt dấu gạch chéo sau một tài nguyên là sai về mặt ngữ nghĩa. Web được thiết kế để phân phối các tài nguyên có thể định địa chỉ và các địa chỉ đó - URL - được thiết kế để mô phỏng hệ thống phân cấp hệ thống tệp theo kiểu * nix. Trong bối cảnh đó:

  • Dấu gạch chéo luôn biểu thị thư mục, không bao giờ tập tin.
  • Các tệp có thể được đặt tên bất cứ thứ gì (có hoặc không có phần mở rộng), nhưng không thể chứa hoặc kết thúc bằng dấu gạch chéo.

Sử dụng các hướng dẫn này, thật sai lầm khi đặt dấu gạch chéo sau tài nguyên không có thư mục.


50
"Chém sau thư mục, không phải sau tài nguyên": URL không đề cập đến hai loại, "tài nguyên" và "thư mục"; họ đề cập đến một loại điều: tài nguyên. Manh mối nằm trong R của URL.
Raedwald

31
Và mọi thứ trong hệ thống tệp * nix là một tệp, nhưng các thư mục vẫn tồn tại. Ý bạn là sao?
Yarin

6
Cho dù nó được phục vụ bởi một tệp hoặc một thư mục bên trong, những gì người dùng nhìn thấy chỉ là một trang web. Và example.com/about thực sự có thể được đọc từ example.com/about/index.html .
musiphil

1
@DavidRR: Bạn nói đúng. Và trình duyệt cần chuyển hướng vì độ phân giải tên phải xảy ra từ bên trong directory(nếu không, image.pngtrong http://hostname/directorysẽ trỏ đến http://hostname/image.png). Tôi chỉ nói rằng sự khác biệt giữa một tập tin và một thư mục có thể không quan trọng lắm theo quan điểm của người dùng.
musiphil

2
Tôi đồng ý với kết quả của bạn, nhưng tôi không chắc chúng ta nên thiết kế hệ thống URL của mình để mô phỏng các hệ thống tệp theo kiểu * nix. Điều đó ban đầu có thể phục vụ một mục đích, nhưng bây giờ ít hơn nhiều như vậy.
tàu cao tốc

27

Đó thực sự không phải là một câu hỏi về thẩm mỹ, nhưng thực sự là một sự khác biệt kỹ thuật. Các thư mục suy nghĩ của nó là hoàn toàn chính xác và khá nhiều giải thích tất cả mọi thứ. Hãy làm việc ở môi trường bên ngoaì:

Bây giờ bạn đã trở lại thời kỳ đồ đá hoặc chỉ phục vụ các trang tĩnh

Bạn có cấu trúc thư mục cố định trên máy chủ web của mình và chỉ các tệp tĩnh như hình ảnh, html, v.v. - không có tập lệnh phía máy chủ hay bất cứ điều gì.

Một trình duyệt yêu cầu /index.htm, nó tồn tại và được gửi đến máy khách. Sau này bạn có rất nhiều - giả sử - phim DVD được xem xét và một trang html cho mỗi phim trong /dvd/thư mục. Bây giờ ai đó yêu cầu /dvd/adams_apples.htmvà nó được gửi bởi vì nó ở đó.

Vào một ngày nào đó, ai đó chỉ yêu cầu /dvd/- đó là một thư mục và máy chủ đang cố gắng tìm ra những gì sẽ cung cấp. Bên cạnh các hạn chế truy cập, v.v., có hai khả năng: Hiển thị cho người dùng nội dung thư mục (Tôi cá là bạn đã thấy điều này ở đâu đó) hoặc hiển thị một tệp mặc định (trong Apache là DirectoryIndex: sets the file that Apache will serve if a directory is requested.:)

Cho đến nay rất tốt, đây là trường hợp dự kiến. Nó đã cho thấy sự khác biệt trong việc xử lý, vì vậy hãy tham gia vào nó:

Vào lúc 5:34 sáng, bạn đã mắc lỗi khi tải lên các tệp của mình

(Đó là bằng cách hoàn toàn dễ hiểu.) Vì vậy, bạn đã làm điều gì đó hoàn toàn sai và thay vì tải lên, /dvd/the_big_lebowski.htmbạn đã tải lên tệp đó dưới dạng dvd(không có phần mở rộng) /.

Ai đó đã đánh dấu /dvd/danh sách thư mục của bạn (tất nhiên bạn không muốn tạo và luôn cập nhật tiện lợi đó index.htm) và đang truy cập trang web của bạn. Nội dung thư mục được gửi - tất cả đều ổn.

Ai đó nghe danh sách của bạn và đang gõ /dvd. Và bây giờ nó là vít. Thay vì thư mục DVD của bạn liệt kê, máy chủ tìm thấy một tệp có tên đó và đang phân phối tệp Big Lebowski của bạn.

Vì vậy, bạn xóa tập tin đó và nói với anh chàng tải lại trang. Máy chủ của bạn tìm /dvdtệp, nhưng nó đã biến mất. Hầu hết các máy chủ sau đó sẽ nhận thấy rằng có một thư mục có tên đó và nói với khách hàng rằng những gì nó đang tìm kiếm thực sự ở một nơi khác. Câu trả lời rất có thể sẽ là:

Status Code:301 Moved Permanently với Location: http://[...]/dvd/

Vì vậy, hoàn toàn bỏ qua những gì bạn nghĩ về thư mục hoặc tệp, máy chủ chỉ có thể xử lý những thứ đó và - trừ khi được nói khác nhau - quyết định cho bạn về ý nghĩa của "gạch chéo hay không".

Cuối cùng sau khi nhận được phản hồi này, khách hàng tải /dvd/và mọi thứ đều ổn.

Có ổn không Không.

"Tốt thôi" không đủ tốt cho bạn

Bạn có một số trang động nơi mọi thứ được chuyển đến /index.phpvà được xử lý. Mọi thứ hoạt động khá tốt cho đến bây giờ, nhưng toàn bộ điều đó bắt đầu cảm thấy chậm hơn và bạn điều tra.

Chẳng mấy chốc, bạn sẽ nhận thấy điều đó /dvd/listđang thực hiện giống hệt nhau: Chuyển hướng đến /dvd/list/sau đó được dịch sang bên trong index.php?controller=dvd&action=list. Một yêu cầu bổ sung - nhưng thậm chí còn tồi tệ hơn! customer/loginchuyển hướng customer/login/mà lần lượt chuyển hướng đến URL HTTPS của customer/login/. Cuối cùng, bạn có hàng tấn chuyển hướng HTTP không cần thiết (= yêu cầu bổ sung) khiến trải nghiệm người dùng chậm hơn.

Nhiều khả năng bạn cũng có một chỉ mục thư mục mặc định ở đây: index.php?controller=dvdkhông actionchỉ đơn giản là tải nội bộ index.php?controller=dvd&action=list.

Tóm lược:

  • Nếu nó kết thúc với /không bao giờ có thể là một tập tin. Không có máy chủ đoán.

  • Dấu gạch chéo hoặc không dấu gạch chéo là những ý nghĩa hoàn toàn khác nhau. Có một sự khác biệt về kỹ thuật / tài nguyên giữa "gạch chéo hoặc không gạch chéo", và bạn nên biết về nó và sử dụng nó cho phù hợp. Chỉ vì máy chủ rất có thể tải /dvd/index.htm- hoặc tải nội dung tập lệnh chính xác - khi bạn nói /dvd: Nó thực hiện nhưng không phải vì bạn đã yêu cầu đúng. Mà đã có được /dvd/.

  • Bỏ dấu gạch chéo ngay cả khi bạn thực sự có nghĩa là phiên bản gạch chéo cung cấp cho bạn hình phạt yêu cầu HTTP bổ sung. Điều này luôn xấu (nghĩ về độ trễ di động) và có trọng lượng lớn hơn một "URL đẹp" - đặc biệt là vì các trình thu thập thông tin không ngu ngốc như SEO tin hoặc muốn bạn tin;)


2
Vì vậy, trong một bản tóm tắt là tất cả các bạn để thêm dấu gạch chéo ở cuối? :)
Denis

2
Tôi là tất cả để sử dụng nó khi bạn có ý đó;) Ví dụ, nói về các bộ điều khiển và hành động sẽ là: Bộ điều khiển nên kết thúc bằng dấu gạch chéo. Khi bạn tham chiếu một tệp hoặc một hành động bỏ qua dấu gạch chéo
nico gawenda

Đợi đã, tại sao bạn lại bỏ qua dấu gạch chéo cho một hành động? Theo ví dụ của bạn, điều đó sẽ không dẫn đến yêu cầu chuyển hướng thêm? Ý tôi là, có lẽ máy chủ của bạn đủ thông minh để nhận ra hành động của bộ điều khiển và sẽ không thực sự chuyển hướng để tìm tệp hoặc thư mục trong trường hợp đó, nhưng nó vẫn đi ngược lại ví dụ của bạn phải không?
Adam Goodwin

7
Tôi không hiểu ví dụ của bạn. Hệ thống tập tin nào cho phép một thư mục và một tập tin thông thường khác có cùng tên ( dvd)?
musiphil

19

Khi bạn thực hiện URL của bạn /about-us/(với đường gạch chéo), thật dễ dàng để bắt đầu với một tập tin duy nhất index.htmlvà sau đó mở rộng nó và thêm nhiều file (ví dụ our-CEO-john-doe.jpg) hoặc thậm chí xây dựng một hệ thống phân cấp dưới nó (ví dụ /about-us/company/, /about-us/products/vv) khi cần thiết, mà không thay đổi URL được xuất bản . Điều này cung cấp cho bạn một sự linh hoạt tuyệt vời.


9
Tôi xin lỗi tôi đã không nhận được nó. nếu tôi bắt đầu bằng /about-ushoặc /about-us/tôi vẫn cần thay đổi URL được xuất bản trong cả hai trường hợp nếu tôi mở rộng thư mục. các tập tin mới sẽ được /about-us/new-file.htmltrong cả hai trường hợp !! tôi đang thiếu gì ở đây
Kế toán م

2
@Accountant Tôi nghĩ rằng OP có thể nghĩ rằng nếu bạn xuất bản "/ about-us" mà không có dấu gạch chéo thì sau đó bạn không thể thêm tài nguyên phụ bằng các đường dẫn tương đối. Khi bạn không có dấu gạch chéo, trình duyệt sẽ tin rằng một tham chiếu đến "ceo.jpg" trên trang giới thiệu sẽ nằm ở thư mục gốc của tên miền của bạn và sẽ yêu cầu example.com/ceo.jpg. Với dấu gạch chéo, trình duyệt sẽ yêu cầu example.com/about-us/ceo.jpg và bạn có thể định tuyến tĩnh toàn bộ cây thư mục cho trang web của mình khi bạn mở rộng.
daw

1
FYI - Tôi không tin bất kỳ điều nào ở trên là đúng - Tại sao không thể có /about-us/about-us/company? Về mặt phục vụ các tệp, cả Apache và IIS đều có thể xử lý việc này tốt, vì vậy tôi không đồng ý.
sean2078

1
@ sean2078 Có, nhưng nếu, từ /about-usbạn muốn liên kết đến /about-us/company, bạn phải sử dụng href="https://stackoverflow.com/about-us/company"hoặc href="./company"(không chắc chắn về điều đó, mặc dù). Nếu bạn đang trên /about-us/, mặc dù, nó đơn giản : href="company".
Adowrath

11

Các câu trả lời khác ở đây dường như ủng hộ việc bỏ qua dấu gạch chéo. Có một trường hợp trong đó một dấu gạch chéo sẽ giúp tối ưu hóa công cụ tìm kiếm (SEO). Đó là trường hợp tài liệu của bạn có phần mở rộng tập tin không phải là .html. Điều này trở thành một vấn đề với các trang web được xếp hạng trang web. Họ có thể chọn giữa hai url này:

  • http://mysite.example.com/rated.example.com
  • http://mysite.example.com/rated.example.com/

Trong trường hợp như vậy, tôi sẽ chọn một dấu gạch chéo . Đó là bởi vì .comphần mở rộng là một phần mở rộng cho các tệp lệnh thực thi của Windows. Các công cụ tìm kiếm và trình kiểm tra vi rút thường không thích các URL có vẻ như có thể chứa phần mềm độc hại được phân phối thông qua các cơ chế như vậy. Dấu gạch chéo dường như làm giảm bớt bất kỳ mối lo ngại nào, cho phép trang xếp hạng trong các công cụ tìm kiếm và có được bởi trình kiểm tra vi rút.

Nếu URL của bạn không có .trong phần tệp, thì tôi khuyên bạn nên bỏ qua dấu gạch chéo để đơn giản.


Không có công cụ tìm kiếm thực sự là ngu ngốc. Câu trả lời này là đầu cơ thuần túy.
Navin

1
Tôi thực sự đã thấy vấn đề này với Google. Đó là vài năm trước, vì vậy tôi không chắc liệu đó có còn là trường hợp ngày hôm nay không.
Stephen Ostermiller

Huh, đó là một điểm dữ liệu tốt. Mặc dù chúng tôi vẫn không biết nếu nó được gây ra bởi một cái gì đó khác.
Navin

10

Ai nói tên tập tin cần gia hạn ?? thỉnh thoảng hãy xem trên máy * nix ...
Tôi đồng ý với bạn của bạn, không có dấu gạch chéo.


3

Từ góc độ SEO, việc chọn có hay không bao gồm dấu gạch chéo ở cuối URL là không liên quan. Ngày nay, người ta thường thấy các ví dụ của cả hai trên web. Một trang web sẽ không bị phạt theo bất kỳ cách nào, cũng như sự lựa chọn này sẽ ảnh hưởng đến xếp hạng công cụ tìm kiếm trang web của bạn hoặc các cân nhắc SEO khác.

Chỉ cần chọn quy ước đặt tên URL mà bạn thích và bao gồm thẻ meta chính tắc trong <head>phần của mỗi trang web.

Các công cụ tìm kiếm có thể coi một trang web là hai URL trùng lặp riêng biệt khi chúng gặp phải và không có dấu gạch chéo, nghĩa là example.com/about-us/example.com/about-us.

Cách tốt nhất là bao gồm thẻ meta chuẩn trên mỗi trang vì bạn không thể kiểm soát cách các trang web khác liên kết với URL của mình.

Thẻ canonical trông như thế này : <link rel="canonical" href="https://example.com/about-us" />. Sử dụng thẻ meta chuẩn sẽ đảm bảo rằng các công cụ tìm kiếm chỉ đếm từng URL của bạn một lần, bất kể các trang web khác có bao gồm dấu gạch chéo khi chúng liên kết đến trang web của bạn hay không.

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.