반응형

mediawiki(미디어위키)나 다른 사이트에서 안내된 방법은 참 귀찮고 쓸모가 없다. /w 디렉터리에 설치하라는 둥... 죄다 펌복붙...😡

아래와 같은 기본 경로를

https://simulz.kr/wiki/index.php?title=대문
https://simulz.kr/wiki/index.php/대문

아래처럼 바꿀 수 있는데도 왜 관련 정보가 없을까?

https://simulz.kr/wiki/대문

XpressEngine(XE) 또는 Wordpress(워드프레스)는 자체 단축 URL 기능을 가지고 있다.
그럼, 미디어위키도 가능하다는 것이다!


방법

카페24 호스팅 기준. 아파치 서버.

.htaccess

.htaccess 파일을 만들고 /wiki/ 디렉터리에 넣는다. 미디어위키가 설치된 폴더에 넣으라는 것이다. 루트에 넣지 말라.

기본 코드

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^images/.*\.png
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ index.php [L]
</IfModule>

위키 URI 입력 시, 존재하는 파일명을 지정하면 해당 파일로 직접 접근하게 되며, 존재하지 않는 파일명을 입력하면 위키 문서를 만들 수 있다.

특정 문자열로 문서를 만드는 것을 막으려면 .htaccess 파일에 아래 코드를 참고하여 RewriteRule ^(.*)$ index.php [L] 윗줄에 추가한다.

특정 문자열 문서 생성 금지

RewriteCond %{REQUEST_URI} !^.*\.php
RewriteCond %{REQUEST_URI} !^.*\.html
RewriteCond %{REQUEST_URI} !^.*\.css
RewriteCond %{REQUEST_URI} !^.*\.js

위와 같이 설정하면 abc.php 같은 위키 문서를 만들 수 없다. 문서로 만들 수 없는 것뿐이지, 접근 권한이 있는 파일은 직접 접근이 된다.

썸네일 관련 리다이렉트

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

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ thumb.php?f=$1&width=$2 [L,QSA,B]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ thumb.php?f=$1&width=$2&archived=1 [L,QSA,B]

썸네일은 원본 이미지에 크기만 다르게 설정한다.
images 디렉터리로 시작하는 썸네일 파일은 thumb.php로 리다이렉트한다.

LocalSettings.php

미디어위키의 설정 파일을 열고 아래 문자열을 수정/추가한다.

$wgArticlePath = "{$wgScriptPath}/$1";

 

RegEx(정규표현식)

! 기호는 제외한다는 뜻이다.
^ 기호는 시작한다는 뜻이다.
. 기호는 임의의 문자열을 나타낸다.
* 기호는 앞의 문자가 여러 개인 것을 나타낸다.
\ 기호는 뒤의 기호를 문자로 바꾼다.
$ 기호는 끝난다는 뜻이다. 없어도 된다.

 

끝 😂

 

참조

mod_rewrite - Apache HTTP Server Version 2.4

 

반응형

관련글