미디어위키 간편URL 적용

1 개요[ | ]

미디어위키 단축 URL 사용, 미디어위키 단축 주소
미디어위키 짧은 URL 적용, 미디어위키 짧은 주소 적용

2 미디어위키 폴더 이름 변경[ | ]

미디어위키 폴더 이름이 w가 아니었다면 w로 변경 (여기서는 mediawiki 이었던 예시)

[root@zetawiki html]# ll
... (생략)
drwxr-xr-x 16 root root   4096 Aug 16 17:58 mediawiki
[root@zetawiki html]# mv mediawiki w
[root@zetawiki html]# ll
... (생략)
drwxr-xr-x 16 root root   4096 Aug 16 17:58 w

3 LocalSettings.php 수정[ | ]

수정 전
$wgScriptPath       = "/mediawiki";
$wgScriptExtension  = ".php";
수정 후
$wgScriptPath       = "/w";
$wgScript           = "$wgScriptPath/index.php";
$wgArticlePath      = "/wiki/$1";
$wgScriptExtension  = ".php";

4 방법1: httpd.conf 수정 및 아파치 재시작[ | ]

  • httpd.conf 파일의 DocumentRoot 행 아래에 내용 추가. (DocumentRoot 줄 자체는 수정하면 안됨.)
  • 아래 예시는 DocumentRoot가 /var/www/html일 때의 예시이다. 만약 다르다면 /var/www/html 부분을 모두 찾아 DocumentRoot 값에 맞게 바꿔줘야 한다.
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
#RedirectMatch /mediawiki/index.php/(.*)$ http://jmnote.com/wiki/$1
#RedirectMatch /mediawiki/index.php?(.*)$ http://jmnote.com/w/index.php?$1
#RedirectMatch /mediawiki/images/(.*)$ http://jmnote.com/w/images/$1
Alias /wiki /var/www/html/w/index.php
Alias /index.php /var/www/html/w/index.php
Alias /w/skins/ /var/www/html/w/skins/
Alias /w/images/ /var/www/html/w/images/
→ RedirectMatch는 기존 주소[1]를 새 주소[2]로 포워딩해주는 역할을 한다. (새 사이트 구축시는 필요 없다.)
→ 검색엔진에 등록된 기존 주소가 끊어지지 않도록 하려면 RedirectMatch 3줄 주석 해제.[3]
[root@zetawiki html]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

5 방법2: .htaccess 파일 작성[ | ]

( httpd.conf 파일을 수정할 수 없는 경우 등 ) 미디어위키 폴더.htaccess 파일을 수정[4]한다.[5]

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}${RQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}${RQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/w/index.php [L]

6 (Optional, 윈도우) 한글 제목 문서가 깨지는 현상 해결법[ | ]

테스트 환경 : Windows 10, IIS(URL Rewrite 2.0, Mediawiki 1.30.0, php-7.2.3

Language.php 파일의 checkTitleEncoding 부분 코드를 수정해서 해결가능.(Line 2794) 여기서 UHC(Unified Hangul Codeset)는 CP949(한글 인코딩)을 의미한다. 영어 외의 모든 언어에 대해서 이렇게 해주기는 어렵겠지만 임시방편으로는 유용하게 쓸 수 있을 것 같다.

	/**
	 * @param string $s
	 * @return string
	 * @throws MWException
	 */
	function checkTitleEncoding( $s ) {
		if ( is_array( $s ) ) {
			throw new MWException( 'Given array to checkTitleEncoding.' );
		}
		if ( StringUtils::isUtf8( $s ) ) {
			return $s;
		}

		# ADDED for Korean Language Support
		if( mb_detect_encoding($s, "UHC") ) {
			return $this->iconv( "UHC", 'utf-8', $s );
		}

		return $this->iconv( $this->fallback8bitEncoding(), 'utf-8', $s );
	}

7 같이 보기[ | ]

8 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}