문제

빨리요.

저는 모드 재작성을 사용하고 있으며 대부분의 대체 항목이 있습니다.

  • 빈 공간 = _
  • æ = ae
  • Æ = ae

등등.

자연적인 대체 문자는 무엇입니까? /?

감사해요

도움이 되었습니까?

해결책

밑줄은 단어 캐릭터로 간주됩니다. foo_bar 두 단어가 아니라 하나의 단어입니다. 그러나 하이픈은 단어 캐릭터로 간주되지 않으므로 foo-bar 두 단어입니다.

따라서 Hypen을 사용해야합니다 - 두 부분과 밑줄을 분리하려는 곳마다 _ 두 부분을 연결하려는 곳. 의 경우 / 그것은 분리하는 데 사용됩니다. 나는 hypen을 선호합니다 -.

다른 팁

  • Æ = ae

반드시 그렇게 할 필요는 없습니다.UTF-8로 인코딩된 바이트처럼 ASCII가 아닌 유니코드 문자를 URL에 넣을 수 있습니다.그래서:

http://en.wikipedia.org/wiki/%C3%86

브라우저에 다음과 같이 표시됩니다.

http://en.wikipedia.org/wiki/Æ

둘 중 하나를 주소 표시줄에 붙여넣을 수 있습니다.

공백과 슬래시는 %20 및 %2F로 인코딩될 수 있습니다.그러나 이러한 형식은 예약된 문자이기 때문에 브라우저에 여전히 백분율로 표시됩니다.그래서 별로 예쁘지는 않은 것 같아요.%2F에는 CGI를 기반으로 하는 기존 스크립팅 환경이 이를 읽을 수 없다는 점과 Apache가 기본적으로 이러한 스크립트가 혼란스러워지고 보안 허점을 남기는 것을 막기 위해 의도적으로 차단한다는 점에서 추가적인 문제가 있습니다.

그래서 완전히 제거하여 제목 슬러그를 만듭니다.

# % ' ( ) ? [ ] (U+00AD soft hyphen)

모든 제어 문자(U+00A0을 제외한 U+0000 ~ U+001F 및 U+007F ~ U+00BF)와 함께.그런 다음 다음 실행을 대체합니다.

" $ & * + , / : ; < = > @ \ ^ (U+0020 space) (U+000A newline)

단일 밑줄로.이렇게 하면 URL에 %xx 시퀀스가 ​​나타날 필요가 없습니다.(유니코드 문자의 경우 여전히 %xx 시퀀스가 ​​있지만 사용자에게는 표시되지 않습니다.)

원하는 경우 밑줄 대신 하이픈을 사용할 수 있습니다. 둘 중 더 예쁜 것을 사용하세요.검색 엔진은 어느 쪽이든 괜찮을 것입니다.

다른 답변에 대한 의견은 다음과 같습니다.

데이터베이스에서 이름을 검색하기 위해 PHP를 사용하기 때문입니다.따라서 각 문자를 원래 문자로 다시 변환해야 합니다. 그렇지 않으면 일치하는 문자가 발견되지 않습니다.

하지만 이 경우 캐릭터에 대해 복구할 수 없는 작업을 수행할 수는 없습니다.'Æ'를 'ae'로 변경할 수 없습니다. 공백은 '%20'으로, 슬래시는 '%2F'로 인코딩해야 합니다.이로 인해 약간 보기 흉한 URL이 생성되고 '%2F'는 Apache 및 IIS에서 배포 문제를 발생시킵니다.

제목만 입력해야 하는 경우 위에서 제안한 대로 조회할 처리된 슬러그에 (UNIQUE 인덱스) 열을 추가해야 합니다.그러나 페이지 제목의 이름을 바꾸거나 수정할 수는 없습니다. 슬러그가 변경되어 URL이 손상되기 때문입니다.

이 문제를 해결하는 일반적인 접근 방식은 슬러그 외에 숫자 ID를 포함하는 것입니다(예를 들어 SO가 수행하는 방법 참조).최적의 SEO를 위해 슬러그 이름이 잘못된 곳에서 301 리디렉션을 수행할 수도 있습니다.

Google은 SEO 목적을 위해 이와 같은 단어를 분리하거나 밑줄 _ 이들 모두 가독성을위한 지사이므로 대시를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top