워드프레스를 하위 디렉터리(예: wp, wordpress, blog 등)에 설치한 경우 워드프레스 주소에 http://example.com/wordpress와 같이 하위 폴더명이 표시됩니다. 워드프레스 URL에서 하위 디렉터리 경로를 제거하는 방법에 대해 살펴보겠습니다.
워드프레스 주소에서 하위 디렉터리 제거 방법
크게 두 가지 방법을 생각해볼 수 있습니다. 첫 번째는 .htaccess 파일을 통해 하위 디렉터리로 리디렉션시켜주는 것입니다. 두 번째는 서브 디렉터리에 있는 워드프레스 파일들을 모두 루트 디렉터리(public 디렉터리)로 이동하는 것입니다.
많은 글에서 첫 번째 방법을 설명하고 있을 것입니다. 제 블로그에서도 첫 번째 방법을 소개한 적이 있습니다. 개인적으로는 두 번째 방법이 더 깔끔하고 추후에 멀티사이트를 설치하거나 리디렉션을 설정할 일이 있다면 문제를 일으키지 않는 방법 같습니다.
.htaccess를 통해 워드프레스 주소에서 하위 디렉터리 제거하기
이 방법은 워드프레스 공식 문서에 언급된 방법입니다. 이 방법을 이용하면 이미지 등 모든 파일의 경로에는 하위 폴더명이 유지되면서 워드프레스 주소에서 하위 폴더명이 사라지게 됩니다. 이 블로그의 "워드프레스 주소 변경으로 사이트에 접속하지 못하는 문제 해결"에서 이 방식을 설명하고 있습니다.
요약하면 다음과 같은 단계로 진행할 수 있습니다.
- 워드프레스 알림판 » 설정 » 일반으로 이동하여 워드프레스 주소 설정은 그대로 두고(예: http://example.com/wordpress), 사이트 주소 설정에서 하위 폴더명을 삭제합니다(예: http://example.com).
- FTP를 통해 서브 디렉터리에 설치된 워드프레스 폴더에 접속하여 .htaccess 파일과 index.php 파일을 루트 디렉터리(클라우드웨이즈 등 대부분의 웹호스팅에서 public_html이 루트 디렉터리이지만, www 또는 html 폴더를 사용하는 호스팅도 있습니다)로 복사합니다.
- 루트 폴더로 복사한 index.php 파일을 열고
require( dirname( FILE ) . '/wp-blog-header.php' );
라인을 다음과 같이 수정합니다. (wordpress 부분은 적절한 하위 폴더명으로 대체)
require( dirname( FILE ) . '/wordpress/wp-blog-header.php' ); - 이제 워드프레스에 로그인하여 워드프레스 알림판 » 설정 » 고유주소로 이동하여 저장 버튼을 누릅니다. 그러면 .htaccess 파일이 재생성됩니다.
조금 부연하자면, 표준 워드프레스 고유주소 설정에 대한 .htaccess 규칙은 다음과 같습니다.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Public 폴더의 .htaccess 규칙은 다음과 같이 변경됩니다.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ /example/index.php [L]
</IfModule>
또한, Public 디렉터리의 index.php 파일에서
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
이 라인은 다음과 같이 변경되어야 합니다.
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );
마지막으로 하위 디렉터리의 .htaccess 파일의 규칙은 다음과 같을 것입니다.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress
하위 폴더의 워드프레스 파일들을 루트 디렉터리(Public 디렉터리)로 이동하기
다른 방법으로 하위 디렉터리에 있는 워드프레스 관련 파일과 폴더를 모두 루트 디렉터리로 이동하는 방법입니다.
아래의 방법을 진행하기 전에 반드시 백업을 실시하여 PC나 클라우드 스토리지 등 안전한 곳에 보관할 것을 권장합니다.
개인적으로 이 방법이 깔끔하고 추후에 문제를 일으킬 소지가 없는 좋은 방법 같습니다.
모든 파일을 이동한 후에 워드프레스 알림판 » 설정 » 일반으로 이동하여 워드프레스 주소와 사이트 주소에서 하위 폴더명을 모두 제거합니다.
그런 다음, DB에서 모든
http://example.com/wordpress
(wordpress는 하위 폴더명, 상황에 따라 적절히 변경)
항목을 다음과 같이 하위 폴더를 제거한 기본 도메인 URL로 일괄 변경합니다.
http://example.com
phpMyAdmin에 접속하여 DB 작업이 가능합니다.
DB 작업은 되돌릴 수 없으므로 반드시 백업 후에 진행하세요.
DB에 접속하지 않고 플러그인을 사용하여 URL을 일괄 변경하는 것도 가능합니다.
정리해보면 다음과 같은 단계로 진행할 수 있습니다.
- 전체 사이트 백업을 합니다.
- 하위 폴더에 있는 모든 워드프레스 관련 파일과 폴더를 Public 폴더로 이동시킵니다.
- DB에 접속하여 모든 http://example.com/wordpress을 http://example.com으로 일괄 변경합니다.
- 또는 -
DB에 접속하여 사이트 주소와 워드프레스 주소 항목만 변경하고, 워드프레스 사이트에 로그인한 다음 플러그인을 사용하여 URL을 일괄 변경합니다. - 하위 폴더명이 일괄 변경되지 않은 부분은 수동으로 변경합니다.
만약 테마 파일을 직접 수정하면서 URL에 하위 폴더명이 포함되었거나 메뉴에서 커스텀 메뉴 항목으로 URL을 직접 입력했거나, 테마 옵션에서 로고 URL을 입력하여 로고를 지정한 경우 등 일부 상황에서 하위 폴더명이 그대로 유지될 수 있습니다. 슬라이더 레볼루션으로 만든 슬라이드에 포함된 이미지의 URL도 하위 폴더명이 유지될 것입니다. 이런 예외적인 사항에 대해서는 수동으로 URL을 변경해주어야 합니다.
마치며
이상으로 워드프레스 사이트 URL에서 하위 디렉터리를 제거하는 방법에 대하여 살펴보았습니다. 첫 번째 방법이 간편한 편이지만 근본적으로 주소를 변경한 것은 아니고 .htaccess 규칙을 사용하여 리디렉션시켜서 워드프레스 주소에서 하위 폴더를 제거한 것이며, 모든 이미지와 파일의 URL에 하위 폴더명이 유지됩니다. 두 번째 방법은 번거롭지만 더 바람직할 수 있습니다.
워드프레스 주소에서 하위 디렉터리 경로를 제거하는 데 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.
댓글 남기기