매뉴얼:Short URL

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Short URL and the translation is 89% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎português • ‎português do Brasil • ‎русский • ‎中文

Short URLs(다른 이름 : URL Rewrites)이란, 문서의 URL에서 .php라고 하는 문자를 숨기기 위한 기능입니다. 후에 문제를 줄이기 위해서 시작하기 전에 당신의 웹사이트의 안정된 URL 구조를 얻는데 몇 분 걸립니다.

도입

목표

MediaWiki의 기본 설치 경로는 보통 다음과 같습니다:

/var/www/localhost/htdocs/mediawiki/w (관리자 사용자로서 설치할 경우)
/home/johndoe/public_html/mediawiki/w (공유 프로바이더로 설치할 경우)

MediaWiki의 기본 페이지 주소는 아래의 예제와 같습니다.

http://example.org/w/index.php/Page_title (미디어 위키 최신버젼, CGI 지원이 없는 경우)
http://example.org/w/index.php?title=Page_title (미디어위키 최신버젼, CGI 지원이 있는 경우)

이 페이지에 제시된 방법들을 사용하여 아래처럼 설정할 수 있습니다.

http://example.org/wiki/Page_title 가장 일반적인 설정으로, 위키 백과사전과 동일. 서버측 설정 변경 작업이 필요하므로 기본값은 아님.
http://example.org/view/Page_title
http://wiki.example.org/view/Page_title
http://example.org/Page_title (권장되지 않습니다. 아래 참고)
http://wiki.example.org/Page_title (권장되지 않습니다. 아래 참고)
도메인의 루트에 페이지 이름을 갖는 것은 루트 디렉터리 하위에 위치한 다른 파일들이나 다른 디렉터리와 충돌할 수 있기 때문에 권장하지 않습니다. 예를들어, /images/ 디렉터리에 이미지들이 위치한 경우, Images라는 페이지에 접근할 수 없게 됩니다.

장점과 단점

  • 장점: 기술적 세부 내용이 최종 사용자에게 노출되지 않도록 만들며, 다른 것 보다, 백엔드 소프트웨어가 변경된 경우에도 수정 없이 안정성을 유지할 수 있게 됩니다. (CGI가 지원되는 경우와 그렇지 않은 경우에 기술된 미디어위키 기본 URL 구조의 차이점을 보세요) 짧게 줄여진 주소들은 가독성이 높으며, 기억하기 쉽고, 방문자를 유도하기 쉽습니다. 더불어, 짧은 URL은 기본 URL보다 검색 엔진 최적화(SEO)에 유리하며, URL에 ?가 포함된 경우 검색 엔진이 페이지 순위를 계산할 때 제대로 처리하지 못하게 될 수 있습니다.
  • 단점: 추가적인 설정이 필요하기 때문에 사용중인 호스팅 환경에 의존성이 높아서 사용하기 곤란해질 수 있습니다. 하지만, 현재 광범위하게 사용되는 웹서버 소프트웨어들은 짧은 URL을 사용할 수 있도록 설정되어 있으며, 대부분의 유료 웹호스팅 서비스들은 이러한 기능들을 지원합니다. 이러한 기능을 제공하지 않는 호스트는 돈을 지불하지 않는 것을 추천합니다.

가이드

아래 목록은 웹 서버별 단축 URL 설정 공식 가이드입니다. 이 목록에서 자신의 웹서버에 맞는 것을 선택하세요. 현재 사용중인 서버 소프트웨어가 무엇인지 모른다면, 보통은 Apache라고 가정하셔도 좋습니다.

다른 웹 서버를 위한 가이드

경고 경고: 아래 가이드들은 보통 오래되었거나 대부분 완전히 잘못된 정보입니다. 이 섹션은 다른 공식 가이드들중 제거된 것들 처럼 어느날 갑자기 사라져버릴지도 모릅니다.

누구라도 설명서 페이지를 만들어 아래 목록에 기재하는 것을 환영합니다. 새로운 설명서 페이지를 만들 때에는 센스있는 네이밍과 아래 문서들을 참고하여 적절하게 이름 붙혀 주세요. 개별 페이지는 독특하고 개성있는 해결 방법을 포함할 수 있지만, 독자들은 자신들이 하기 싫은 복잡한 작업들을 생략해버릴지도 모릅니다. 간단하고, 읽기 편하며, 짧게 작성하되, 각 설명서들을 섹션 혹은 페이지로 적절히 잘 나눠주세요.

다른 사람들이 짧은 URL이 잘 동작할 수 있도록 돕기 위해서, 각 방법들을 테스트 해보고 나서 페이지를 편집하고, "worked(작동함)" 혹은 "didn't_work(안됨)" 숫자들을 증분 시켜서 그 가이드를 다른사람들이 참고하기 쉽게 만들어 주세요.

URL 형태 - example.com/wiki/Page_title

편집하기, 히스토리 보기, 기타 등등 같은 동작들은 여전히 index.php로 요청을 보냅니다. ($wgActionPaths가 설정되어 있지 않다면)

루트 액세스

아래 방법들은 서버 설정에 접근이 가능해야만 사용할 수 있습니다. 만약 공유된 호스트를 사용중이라면 대부분 사용 불가할것입니다. 이런 경우, "루트 권한이 필요치 않은" 방법을 사용해야 할 것입니다. You can jump directly to the MediaWiki ShortURL Builder tool and follow the on screen instructions after clicking on "I don't have root access".

* Abyss Web Server X2

(Apache 가이드를 보려면 가이드 섹션의 Apache 링크를 누르세요)

URL 형태 - example.com/Page_title

example.com/Page_title 형태로 URL을 만드는 방법:

URL 형태 - wiki.example.com/Page_title

wiki.example.com/Page_title 형태로 URL을 만드는 방법:


문제 해결

엠퍼샌드 기호(&) 문제

엠퍼센드 기호($) 문제는 페이지 제목에 &나 ?, #, +, / 같은 특수 기호가 포함된 경우에 발생합니다. 이러한 기호들이 링크에 제대로 엔코딩되었음에도 불고하고 mod_rewrite 모듈에서 스크립트로 제대로 전달되지 않는 경우입니다. 이러한 문제들은 제목의 특수 문자가 잘려서 404 페이지 찾을 수 없음 오류로 나타나게 됩니다. 예를들어 "John과 Maria의 페이지"라는 링크를 클릭하면 404 에러를 보게 되는데, 미디어 위키는 John이라는 페이지를 찾게 되기 때문이죠.

이것은 길게 늘어진 형태를 가진 이름의 앰퍼샌드 기호(&)를 쿼리 문자열(QS)의 구분 기호로 해석하기 때문임며, PHP 런타임에 절대 도달할 수 없을 겁니다. This is caused by an old and problematic mod_rewrite bug.[1]

해결 방법:

이 문제는 Rewrite 규칙에서 ?title=$1에 의해 주로 발생되며 보통은 /index.php?title$1형태(완전히 불필요하고 다소 위험한)로 설정되어 있는 경우입니다. 미디어 위키는 REQUEST_URI를 직접 분석하기 때문에 /index.php 뒤에 있는 모든 것을 재작성합니다.

스킨이 안보임

Ubuntu 8.10에서 미디어위키 1.11.2 (또는 이후 버젼)를 사용할 때 이상한 방향으로 미디어 위키를 사용한다면 스킨을 로드하지 못할 수도 있습니다. 이것을 해결하려면 LocalSettings.php의 $wgScriptPath 값을 사용하여 /var/lib/mediawiki를 가리키는 /var/www의 심볼릭 링크를 만듭니다. 예를들어, $wgScriptPath가 "/w"로 설정되어 있다면 "sudo ln -s /var/lib/mediawiki /var/www/w" 명령을 수행하면 됩니다.

대안으로 원래 파일에 $wgLoadScript를 설정해보세요. 원래 URL이 /wiki이고, /w로 짧게 줄이려면 그걸 /wiki/load.php를 가르키도록 만들면 됩니다.

캐쉬 제거하기

LocalSettings.php 파일의 $wgArticlePath설정 값이 반영되지 않았다면 아마 이전 설정으로 인해 캐슁된 링크들 때문일것입니다.

mysite.com/wiki/Main_Page?action=purge페이지에 접속하면 미디어위키가 캐슁된 링크들을 강제로 재생성하도록 만듭니다.

또한 아래 과정을 시도할 수 있습니다.

  1. "TRUNCATE objectcache" 명령을 실행하거나
  2. $wgCacheEpoch가 업데이트 되었는지 확인하세요. ($wgInvalidateCacheOnLocalSettingsChange가 활성화 되어 있다면 LocalSettings.php를 수정해 캐쉬를 제거합니다)

도메인 접속자를 위키로 리다이렉트 시키기

공식 가이드는 사이트의 루트에 짧은 URL 설정을 어떻게 해야 하는지 권고 사항을 포함합니다.

예를들어 Apache 가이드는 사이트 루트를 짧은 URL로 지정할 때 아래처럼 권고합니다.

RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

주의해야 할 것은, 우린 HTTP 요청을 특정 위키 경로나 메인 페이지를 가르키도록 설정하는 것을 권장하지 않습니다. 메인 페이지로 바로 리다이렉션 시키는 것은 서버 설정에 위키 페이지를 하드코딩하게 되는 것이며 위키 경로로 리다이렉션 시키는 것은 결과적으로 리다이렉션을 두번 수행하게 될 것입니다. 간단하게 루트 경로를 미디어 위키로 재작성 시키면 그게 메인페이지를 향하는 301 리다이렉션이 될것입니다.

가상 호스트 기능을 사용하고 있다면, Rewrite 규칙들을 가상 호스트 선언 안쪽에 위치시켜야 합니다!

/wiki에서 /w로 위키 옮기기

보통 일반적으로 초보들은 미디어 위키 자체(짧은 URL 말고 소스코드)를 /w가 아닌 /wiki에 설치합니다. 이걸 한번 설치하고 나면, 짧은 URL을 설정하려고 시도할 때 아! 실수했구나라고 느끼고, 실 경로와 가상 경로가 충돌하는 어려운 문제가 됩니다.

일반적인 경우 위키 옴기기라는 메뉴얼이 있지만, 설치 경로만 바꾸는 것 치고는 너무 복잡합니다. 심지어 같은 서버에서 같은 데이터베이스에 같은 호스트 네임을 사용하면서도 말입니다.

이 경우 해야될 것은 다음과 같습니다.

  • LocalSettings.php 파일 및 만들었던 다른 config파일들을 백업합니다.(.htaccess파일 같은것들)
  • 서버에서 미디어 위키 설치 디렉터리의 이름을 /wiki에서 /w로 변경합니다.
  • LocalSettings.php에 들어 있는 $wgScriptPath"/w"로 설정하고 $wgArticlePath에 관한 모든 정의를 제거하거나 주석처리 합니다. (이 변수는 짧은 URL을 다시 설정할때 바꿔야 할 것입니다)
  • 여기서 example.org/w처럼 바로 접근했을때 정상동작 할것입니다.
  • 이제, 짧은 URL을 설정하기 위해 가이드 섹션으로 다시 이동하여 다시 설정하면 됩니다.
  • 뭔가 문제가 없는지 몇가지 테스트를 합니다. 페이지를 수정하고, 몇가지 서로 다른 페이지를 방문 하는 등... 뭔가 비정상적인게 발견되면 LocalSettings.php파일을 백업했던 것으로 복구하고 짧은 URL을 설정하느라 수정했던 연관된 파일들을 복원하고 설치 경로를 다시 /wiki로 변경합니다.

공유된 호스트 사용자들이 기억해야 할 것들: 많은 공유된 호스팅 업체들은 미디어 위키같은 어플리케이션들을 자동으로 설치하거나 자동으로 업그레이드 혹은 백업하기 위해서 어플리케이션 관리자를 제공합니다. 이걸 사용하는 중이고 이 기능들을 계속 사용할것이라면 호스팅 업체의 기술 지원으로 문의셔서, 미디어 위키 설치 디렉터리를 수동으로 변경했음을 고지해주세요.

트릭

관련 항목

외부 링크

각주

  1. Bugzilla mod_rewrite for ampersand bug, partially resolved for some users, but only after 13 years