URL에 슬래시를 언제 사용해야합니까?


283

URL에서 슬래시를 언제 사용해야합니까? 예를 들어-내 URL이 /about-us/같아야 /about-us합니까?

SEO 관련 문제에 대해 잘 알고 있습니다. 중복 된 콘텐츠와 정식입니다. 페이지를 올바로 게재하기 위해 사용해야하는 것을 파악하려고합니다 .

예를 들어, 내 동료는 끝에 슬래시가 "폴더"- "디렉토리"임을 의미하므로 올바른 스타일이 아닙니다. 그러나 슬래시가 없으면 폴더와 거의 같기 때문에 정확하지는 않지만 파일이 아니며 정상적인 파일이 아니라 확장자가없는 파일 이름입니다.

어느 것을 사용해야하는지 알 수있는 적절한 방법이 있습니까?


후행 슬래시이지만, 제 생각에는 주로 미학입니다. 보고 느끼다.
Eric Herlitz


4
이 질문은 선호의 하나로서 제기 되므로, 주로 의견에 근거한 주제가 아닌 것 같습니다 . 그러나 내 대답에서 알 수 있듯이 실제로이 질문을 선호도의 문제로 제기하는 것은 실수입니다. 이것은 XY 문제이며 근본적인 "실제"질문은 정확한 기술적 답변을 가지므로 주로 의견 기반 이 아닙니다 .
Raedwald

Google이 좋아하는 URL 유형에 대한 질문은 프로그래밍과 관련이 없으며 ( 태그 위키에 언급 된 바와 같이 ) Stackoverflow에 대한 주제가 아닙니다 .
Quentin

귀하의 질문을 약간 수정했습니다. 기회가있을 때 다시 확인하십시오. 감사합니다 :)
팀 포스트

답변:


131

개인적으로 슬래시가 잘못 사용되었습니다.

기본적으로 URL 형식은 파일과 폴더의 동일한 UNIX 형식에서 나 왔으며 나중에 DOS 시스템에서 웹에 맞게 조정되었습니다.

Unix와 유사한 운영 체제에서이 책의 ​​일반적인 URL은 file : ///home/username/RomeoAndJuliet.pdf와 같은 파일 경로이며 파일에 저장된 전자 책을 로컬 하드 디스크에 식별합니다.

출처 : Wikipedia : Uniform Resource Identifier

읽을만한 또 다른 소스 : Wikipedia : URI Scheme

1994 년에 URL을 정의한 RFC 1738에 따르면, 자원에 다른 자원에 대한 참조가 포함 된 경우 상대 링크를 사용하여 다음과 같은 상대를 제외하고는 "이와 같은 위치에서 두 번째 자원의 위치를 ​​정의 할 수 있습니다" 통로". 이러한 상대 URL은 상대 링크의 기반이되는 계층 구조를 포함하는 원래 URL에 의존하며 ftp, http 및 파일 URL 스킴은 계층 구조로 간주 될 수있는 일부의 예입니다 . 계층 구조의 구성 요소는 "/"로 구분됩니다.

출처 : Wikipedia URL (Uniform Resource Locator)

또한:

그것이 우리가 자주 듣는 질문입니다. 대답에 앞서! 역사적으로 슬래시가있는 URL은 디렉토리를 나타내며, 슬래시가없는 파일은 파일을 나타냅니다.

http://example.com/foo/ (일반적으로 디렉토리 뒤에 슬래시 포함)

http://example.com/foo (후행 슬래시없이, 일반적으로 파일)

출처 : Google WebMaster Central 블로그-슬래시 또는 슬래시

드디어:

  1. URL 끝에 슬래시가 있으면 주소가 "예쁜"것처럼 보입니다.

  2. 끝에 슬래시가없고 확장자가없는 URL은 다소 "이상하게"보입니다.

  3. CSS 파일 이름을 지정하지 마십시오 (예 : http://www.sample.com/stylesheet/ ) ?

그러나 나는 환경에 관계없이 웹 모범 사례를지지하고 있습니다. 내선이없는 URL에 대해 말했듯이 불쾌하고 불분명 할 수 있습니다.


1
파일 이름을 "stylesheet /"로 지정할 수 없습니다. URL의 모양에 관계없이 슬래시 또는 슬래시가 서버에서 완전히 다른 리소스입니다.
nico gawenda

10
@nicogawenda, .htaccess는 모든 종류의 마술을 할 수 있습니다;) CSS는 실제로 PHP 파일 일 수 있습니다!
rmorse

4
웹 서버는 index.html디렉토리에 액세스 할 때 기본적으로 설정 되거나 비슷한 이름의 파일 을 제공하도록 설정되어 있어 별도의 혼란 /foo//foo/index.html없습니다. 또한 과거에는 브라우저가 /도메인 이름에 추가 되었지만 /홈페이지에 액세스 할 때 브라우저가 (Firefox, Chrome, Opera)에서 생략되었습니다 .
0b10011

4
@bfrohs에 동의합니다. 디렉토리의 기본 페이지는이 원칙에 위배됩니다. 'trailing slash = directory'를 시행하려면 반드시 디렉토리를 가리키는 모든 URL이 디렉토리 목록 또는 403 금지 된 http 응답을 반환해야합니다.
Marvin

11
"Finally"섹션의 1 번과 2 번 포인트가 여전히 정확한지 잘 모르겠습니다. 이것이 처음 작성된 이후 몇 년 동안 취향이 바뀌 었습니다. 나는 이것을 자세히 연구하지는 않았지만 새로운 웹 사이트에서는 슬래시를 생략하는 것이 더 일반적이고 더 예쁘다.
speedplane

172

선호의 문제는 아닙니다. /base그리고 /base/다른 의미를 가지고있다. 많은 경우에 그 차이는 중요하지 않습니다. 그러나 상대 URL이있을 때 중요합니다.

  • child에 상대적 /base/입니다 /base/child.
  • child에 대해 /base(아마도 놀랍게도) /child.


3
예, SEO와 함께이 질문에 가장 중요한 것으로 생각합니다.
user2875289

.Net을 사용할 때이 문제를 겪었습니다 Uri.MakeRelativeUri. 결과는 당신이 말한 것을 정확하게 반영합니다. 베이스에 후행 슬래시를 추가하여 문제를 해결했습니다 Uri.
julealgon

61

나는 디렉토리가 아닌 URL (WordPress)에서 슬래시를 광범위하게 사용하는 것에 항상 놀랐습니다. 자원이 의미 상 잘못 된 후에 슬래시를두기 때문에 이것은 실제로 논쟁 중 하나가 아닙니다. 웹은 주소 지정 가능한 리소스를 제공하도록 설계되었으며 이러한 주소 (URL)는 * nix 스타일 파일 시스템 계층 구조를 에뮬레이트하도록 설계되었습니다. 그런 맥락에서 :

  • 슬래시는 항상 파일을 나타내지 않고 디렉토리를 나타냅니다.
  • 파일 이름은 확장명을 포함하거나 포함하지 않는 이름으로 지정할 수 있지만 슬래시를 포함하거나 포함 할 수 없습니다.

이 지침을 사용하면 디렉토리가 아닌 자원 뒤에 슬래시를 두는 것은 잘못입니다.


50
"리소스 뒤가 아니라 디렉토리 뒤의 슬래시": URL은 "리소스"와 "디렉토리"의 두 가지 유형을 참조하지 않습니다. 그들은 한 가지 종류의 자원을 참조합니다. 단서는 URL의 R에 있습니다.
Raedwald

31
* nix 파일 시스템의 모든 파일은 파일이지만 디렉토리는 여전히 존재합니다. 너의 요점이 뭐야?
Yarin

6
파일 또는 디렉토리에서 내부적으로 제공 되든 사용자에게 표시되는 것은 웹 페이지 일뿐입니다. 그리고 example.com/about는 사실에서 읽을 수 example.com/about/index.html .
musiphil

1
@DavidRR : 당신이 맞아요. 그리고 이름 확인은 내부에서 수행해야하기 때문에 브라우저를 리디렉션해야합니다 directory(그렇지 않으면 image.png에서 http://hostname/directory가리킬 것입니다 http://hostname/image.png). 필자는 파일과 디렉토리의 구별이 사용자의 관점에서 그리 중요하지 않을 수도 있다고 말하고있었습니다.
musiphil

2
귀하의 결과에 동의하지만 * nix 스타일 파일 시스템을 에뮬레이트하기 위해 URL 시스템을 설계해야하는지 잘 모르겠습니다. 그것은 원래 목적을 달성했을 수도 있지만 지금은 훨씬 적습니다.
speedplane

27

그것은 실제로 미학의 문제가 아니라 기술적 인 차이입니다. 디렉토리의 생각은 완전히 정확하고 거의 모든 것을 설명합니다. 해결해 봅시다 :

당신은 지금 석기 시대에 돌아 왔거나 정적 페이지 만 제공합니다

웹 서버에는 디렉토리 구조가 고정되어 있으며 이미지, html 등과 같은 정적 파일 만 있습니다. 서버 측 스크립트 나 그 밖의 어떤 것도 없습니다.

브라우저가 요청 /index.htm하고 존재하며 클라이언트에게 전달됩니다. 나중에 당신은 DVD 영화 리뷰와 /dvd/디렉토리 에 그들 각각에 대한 html 페이지를 많이 가지고 있습니다 . 이제 누군가 요청 /dvd/adams_apples.htm하고 거기에 있기 때문에 전달됩니다.

언젠가 누군가가 요청 하는 것입니다/dvd/ - 디렉토리 이며 서버는 무엇을 전달할 것인지 알아 내려고합니다. 액세스 제한 외에도 두 가지 가능성이 있습니다. 사용자에게 디렉토리 내용을 표시하거나 (이미 어딘가에 보았을 것입니다) 기본 파일을 표시합니다 (Apache에서는 다음과 같습니다).DirectoryIndex: sets the file that Apache will serve if a directory is requested. )

지금까지는 이것이 예상되는 경우입니다.이미 처리의 차이점을 보여 주므로 들어가십시오.

오전 5시 34 분에 파일을 업로드하는 중에 실수가 발생했습니다.

(이것은 완전히 이해할 수 있습니다.) 따라서, 당신은 완전히 잘못된 것을했고 업로드 하지 않고 /dvd/the_big_lebowski.htm파일을 dvd(확장자없이)/ .

누군가 귀하의 /dvd/디렉토리 목록을 북마크에 추가했습니다 (물론 그 멋진 목록을 만들고 항상 업데이트하고 싶지는 않았습니다)index.htm 사이트 ) 웹 사이트를 방문하고 있습니다. 디렉토리 내용이 모두 제공됩니다.

누군가 귀하의 목록을 듣고 입력 중 /dvd입니다. 그리고 지금은 망했다. 서버는 DVD 디렉토리 목록 대신 해당 이름의 파일을 찾고 Big Lebowski 파일을 전달합니다.

따라서 해당 파일을 삭제하고 페이지를 다시로드하도록 지시합니다. 귀하의 서버는/dvd 파일을 찾지 만 사라졌습니다. 그런 다음 대부분의 서버는 해당 이름의 디렉토리가 있음을 확인하고 찾고 있던 것이 실제로 다른 곳임을 클라이언트에게 알려줍니다. 응답은 다음과 같습니다.

Status Code:301 Moved PermanentlyLocation: http://[...]/dvd/

그래서, 당신이 무엇 완전히 무시 다른 말하지 않는 한 - - 디렉토리 나 파일에 대해 서버는 같은 물건을 처리 할 수 있습니다 생각 "슬래시 여부"의 의미에 대해 당신을 위해 결정한다.

마지막으로이 응답을받은 후 클라이언트가로드 /dvd/되고 모든 것이 정상입니다.

괜찮아? 아니.

"괜찮아"는 당신에게 충분하지 않습니다

모든 것이 전달되고 /index.php처리 되는 동적 페이지 가 있습니다. 지금까지 모든 것이 잘 작동했지만 그 전체가 느리게 느껴지기 시작했습니다.

곧, /dvd/list정확히 똑같이하고 있음을 알 수 있습니다. 리디렉션 /dvd/list/은 내부적으로로 번역됩니다 index.php?controller=dvd&action=list. 하나의 추가 요청-그러나 더 나쁜! customer/login의 리디렉션 customer/login/URL로 리디렉션합니다 customer/login/. 당신은 가지고 결국 t 사용자 경험을 느리게 만드는 불필요한 HTTP 리디렉트 (= 추가 요청)의합니다.

: 대부분의 가능성이 너무 여기에 기본 디렉토리 인덱스가 index.php?controller=dvd아니오 action단순히 내부적으로 부하를 index.php?controller=dvd&action=list.

요약:

  • 파일 이 끝나면 파일이 될 /없습니다 . 서버 추측이 없습니다.

  • 슬래시 또는 슬래시는 완전히 다른 의미입니다. "슬래시 또는 슬래시 없음"에는 기술 / 자원 차이가 있으므로이를 알고이를 적절히 사용해야합니다. 서버 /dvd/index.htm가 다음과 같은 말을 할 때 대부분로드 되거나 올바른 스크립트를로드 /dvd하기 때문입니다. 어느 쪽이었을 까 /dvd/.

  • 실제로 슬래시 버전을 의미 하더라도 슬래시를 생략하면 추가 HTTP 요청 페널티가 발생합니다. 이는 항상 좋지 않으며 (모바일 대기 시간을 생각할 때) "예쁜 URL"보다 더 많은 가중치를 갖습니다. 특히 크롤러는 SEO가 생각하거나 믿고 싶어하는만큼 바보가 아닙니다.)


2
요약하면 끝에 슬래시를 추가하는 것입니까? :)
Denis

2
예를 들어 컨트롤러와 작업에 대해 말하면 컨트롤러는 슬래시로 끝나야합니다. 파일이나 액션을 참조 할 때 슬래시를 생략
nico gawenda

잠깐만, 왜 행동을 위해 슬래시를 생략하겠습니까? 귀하의 예에 따라 추가 리디렉션 요청이 발생하지 않습니까? 아마도 귀하의 서버는 컨트롤러 작업을 인식하기에 충분히 똑똑하고 실제로는 파일이나 디렉토리를 찾기 위해 리디렉션하지 않지만 여전히 귀하의 예에 어긋 납니까?
Adam Goodwin

7
나는 당신의 모범을 이해하지 못합니다. 디렉토리와 같은 이름 ( dvd)을 가진 다른 일반 파일을 허용하는 파일 시스템은 무엇입니까 ?
musiphil

19

당신이 당신의 URL을 때 /about-us/(후행 슬래시), 그것은 하나의 파일로 시작 쉽게 index.html하고 나중에 확장하여 더 많은 파일을 (예를 들어 추가 our-CEO-john-doe.jpg그것 (예를 들어 아래의 계층 구조 구축도) 또는 /about-us/company/, /about-us/products/필요에 따라, 등) 없이 게시 된 URL을 변경 . 이것은 당신에게 큰 유연성을 제공합니다.


9
그것을 얻지 못해서 죄송합니다. 시작 /about-us하거나 /about-us/디렉토리를 확장 한 경우 두 경우 모두 여전히 게시 된 URL을 변경해야합니다. 새로운 파일은 /about-us/new-file.html두 경우 모두에 있습니다! 내가 여기서 무엇을 놓치고 있습니까?
회계사 م

2
@Accountant OP는 슬래시없이 "/ about-us"를 게시하면 나중에 상대 경로를 사용하여 하위 리소스를 추가 할 수 없다고 생각할 수 있습니다. 후행 슬래시가 없으면 브라우저는 about 페이지의 "ceo.jpg"에 대한 참조가 도메인의 루트에 있으며 example.com/ceo.jpg를 요청합니다. 슬래시를 사용하면 브라우저에서 example.com/about-us/ceo.jpg를 요청하고 확장 할 때 사이트의 전체 폴더 트리를 정적으로 라우팅 할 수 있습니다.
daw

1
참고 - 나는 위의 경우 중 하나에 해당 믿지 않아요 - 왜 거기 수 없습니다 /about-us/about-us/company? 파일을 제공하는 측면에서 Apache와 IIS는 모두 잘 처리 할 수 ​​있으므로 동의하지 않습니다.
sean2078

1
@ sean2078 네,하지만에서, 경우에 /about-us당신이 링크 싶어 /about-us/company, 당신은 사용할 필요가 href="https://stackoverflow.com/about-us/company"또는 href="./company"(하지 않도록 하나, 그래도 약). 당신이 켜져 있다면 /about-us/간단합니다 : href="company".
Adowrath

11

다른 답변은 슬래시를 생략하는 것을 선호하는 것 같습니다. 후행 슬래시가 검색 엔진 최적화 (SEO)에 도움이되는 경우가 있습니다. 문서에 파일 확장자가 아닌 것으로 보이는 경우가 있습니다 .html. 이것은 웹 사이트를 평가하는 사이트의 문제가됩니다. 다음 두 URL 중에서 선택할 수 있습니다.

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

이 경우 슬래시가있는 것을 선택합니다 . .com확장명은 Windows 실행 가능 명령 파일 의 확장명 이기 때문 입니다. 검색 엔진 및 바이러스 검사기는 종종 이러한 메커니즘을 통해 배포 된 맬웨어가 포함 된 것으로 보이는 URL을 싫어합니다. 후행 슬래시는 모든 우려를 완화시켜 페이지가 검색 엔진에서 순위를 매기고 바이러스 검사기로 접근 할 수있게합니다.

URL .에 파일 부분 이 없으면 단순성을 위해 후행 슬래시를 생략하는 것이 좋습니다.


실제 검색 엔진은 바보가 아닙니다. 이 대답은 순수한 추측입니다.
Navin

1
실제로 Google 에서이 문제를 보았습니다. 몇 년 전 이었으므로 오늘날에도 여전히 그런지 확신 할 수 없습니다.
Stephen Ostermiller

허, 그것은 좋은 데이터 포인트입니다. 우리는 여전히 그것이 다른 것에 기인 한 것인지 모른다.
Navin

10

누가 파일 이름에 확장자가 필요하다고 말합니까? 언젠가 * nix 기계를 살펴보십시오 ...
나는 슬래시없이 친구와 동의합니다.


3

SEO 관점에서 URL 끝에 후행 슬래시를 포함할지 여부를 선택하는 것은 중요하지 않습니다. 요즘에는 웹에서 두 가지 예를 보는 것이 일반적입니다. 사이트는 어떠한 방식으로도 불이익을받지 않으며,이 선택은 웹 사이트의 검색 엔진 순위 나 다른 SEO 고려 사항에도 영향을 미치지 않습니다.

원하는 URL 이름 지정 규칙을 선택하고 표준 메타 태그를 <head> 각 웹 페이지 섹션에 .

검색 엔진은 슬래시가 있거나없는 경우 단일 웹 페이지를 두 개의 별도 중복 URL로 간주 할 수 있습니다. example.com/about-us/ 및) example.com/about-us.

다른 사이트가 URL에 연결되는 방식을 제어 할 수 없으므로 각 페이지에 표준 메타 태그를 포함하는 것이 가장 좋습니다.

표준 태그는 다음과 같습니다 <link rel="canonical" href="https://example.com/about-us" />. 표준 메타 태그를 사용하면 다른 웹 사이트가 사이트에 연결될 때 후행 슬래시를 포함하는지 여부에 관계없이 검색 엔진이 각 URL을 한 번만 계산합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.