"미디어위키 간편URL 적용"의 두 판 사이의 차이

(간편 URL 다른방법)
잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(사용자 3명의 중간 판 15개는 보이지 않습니다)
6번째 줄: 6번째 줄:
==미디어위키 폴더 이름 변경==
==미디어위키 폴더 이름 변경==
[[미디어위키 폴더]] 이름이 w가 아니었다면 w로 변경 (여기서는 mediawiki 이었던 예시)
[[미디어위키 폴더]] 이름이 w가 아니었다면 w로 변경 (여기서는 mediawiki 이었던 예시)
<source lang='cli'>
<syntaxhighlight lang='console'>
[root@zetawiki html]# ll
[root@zetawiki html]# ll
... (생략)
... (생략)
14번째 줄: 14번째 줄:
... (생략)
... (생략)
drwxr-xr-x 16 root root  4096 Aug 16 17:58 w
drwxr-xr-x 16 root root  4096 Aug 16 17:58 w
</source>
</syntaxhighlight>


==[[LocalSettings.php]] 수정==
==[[LocalSettings.php]] 수정==
;수정 전
{{소스헤더|수정 전}}
<source lang='php'>
<syntaxhighlight lang='php'>
$wgScriptPath      = "/mediawiki";
$wgScriptPath      = "/mediawiki";
$wgScriptExtension  = ".php";
$wgScriptExtension  = ".php";
</source>
</syntaxhighlight>


;수정 후
{{소스헤더|수정 후}}
<source lang='php'>
<syntaxhighlight lang='php'>
$wgScriptPath      = "/w";
$wgScriptPath      = "/w";
$wgScript          = "$wgScriptPath/index.php";
$wgScript          = "$wgScriptPath/index.php";
$wgArticlePath      = "/wiki/$1";
$wgArticlePath      = "/wiki/$1";
$wgScriptExtension  = ".php";
$wgScriptExtension  = ".php";
</source>
</syntaxhighlight>
==httpd.conf 수정==
 
==방법1: httpd.conf 수정 및 아파치 재시작==
*[[httpd.conf]] 파일의 DocumentRoot 행 아래에 내용 추가. (DocumentRoot 줄 자체는 수정하면 안됨.)
*[[httpd.conf]] 파일의 DocumentRoot 행 아래에 내용 추가. (DocumentRoot 줄 자체는 수정하면 안됨.)
*아래 예시는 [[DocumentRoot]]가 /var/www/html일 때의 예시이다. 만약 다르다면 /var/www/html 부분을 모두 찾아 DocumentRoot 값에 맞게 바꿔줘야 한다.
*아래 예시는 [[DocumentRoot]]가 /var/www/html일 때의 예시이다. 만약 다르다면 /var/www/html 부분을 모두 찾아 DocumentRoot 값에 맞게 바꿔줘야 한다.
<source lang='bash'>
<syntaxhighlight lang='bash'>
# DocumentRoot: The directory out of which you will serve your
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# documents. By default, all requests are taken from this directory, but
46번째 줄: 47번째 줄:
Alias /w/skins/ /var/www/html/w/skins/
Alias /w/skins/ /var/www/html/w/skins/
Alias /w/images/ /var/www/html/w/images/
Alias /w/images/ /var/www/html/w/images/
</source>
</syntaxhighlight>
:→ RedirectMatch는 기존 주소<ref>http://도메인/mediawiki/index.php/표제어</ref>를 새 주소<ref>http://도메인/wiki/표제어</ref>로 포워딩해주는 역할을 한다. (새 사이트 구축시는 필요 없다.)
:→ RedirectMatch는 기존 주소<ref>http://도메인/mediawiki/index.php/표제어</ref>를 새 주소<ref>http://도메인/wiki/표제어</ref>로 포워딩해주는 역할을 한다. (새 사이트 구축시는 필요 없다.)
:→ 검색엔진에 등록된 기존 주소가 끊어지지 않도록 하려면 RedirectMatch 3줄 주석 해제.<ref>물론 jmnote.com은 자신의 도메인으로 바꿔주시라.</ref>
:→ 검색엔진에 등록된 기존 주소가 끊어지지 않도록 하려면 RedirectMatch 3줄 주석 해제.<ref>물론 jmnote.com은 자신의 도메인으로 바꿔주시라.</ref>


==[[아파치 재시작]]==
*[[아파치 재시작]]
<source lang='cli'>
<syntaxhighlight lang='console'>
[root@zetawiki html]# service httpd restart
[root@zetawiki html]# service httpd restart
Stopping httpd:                                            [  OK  ]
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
</source>
</syntaxhighlight>
 
==방법2: .htaccess 파일 작성==
( httpd.conf 파일을 수정할 수 없는 경우 등 )
[[미디어위키 폴더]]의 [[.htaccess 파일]]을 수정<ref>없으면 신규작성</ref>한다.<ref>http://techwelkin.com/mediawiki-urls-short-clean-and-beautiful</ref>
<syntaxhighlight lang='aconf'>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}${RQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}${RQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/w/index.php [L]
</syntaxhighlight>
 
==(Optional, 윈도우) 한글 제목 문서가 깨지는 현상 해결법==
테스트 환경 : Windows 10, IIS(URL Rewrite 2.0, Mediawiki 1.30.0, php-7.2.3


==다른 방법==
'''Language.php''' 파일의 '''checkTitleEncoding''' 부분 코드를 수정해서 해결가능.(Line 2794)
이 방법은 httpd.conf를 수정할수 있을 때만 가능하다. 그렇지 못하면 아래의 방법으로 해야한다.
여기서 UHC(Unified Hangul Codeset)는 CP949(한글 인코딩)을 의미한다.
*http://techwelkin.com/mediawiki-urls-short-clean-and-beautiful
영어 외의 모든 언어에 대해서 이렇게 해주기는 어렵겠지만 임시방편으로는 유용하게 쓸 수 있을 것 같다.
 
<syntaxhighlight lang='php'>
/**
* @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 );
}
</syntaxhighlight>


==같이 보기==
==같이 보기==
68번째 줄: 105번째 줄:
*[[단축 URL]]
*[[단축 URL]]


==주석==
==참고==
<references/>
 
==참고 자료==
*https://www.mediawiki.org/wiki/Manual:Short_URL
*https://www.mediawiki.org/wiki/Manual:Short_URL


[[분류: 미디어위키]]
[[분류: 미디어위키]]
[[분류: URL]]
[[분류: URL]]

2020년 11월 2일 (월) 02:59 기준 최신판

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 }}