워드프레스 고유주소 변경과 www서브도메인 링크주소 리다이렉팅 방법(permalink)

15

워드프레스를 설치하고 나서 곧바로 설정하길 추천하는 것들 중 두 가지는 글의 고유주소(permalink) 변경과 www로 시작하는 서브도메인 리다이렉팅입니다.

리다이렉팅은 방문자가 특정한 링크주소로 접속해왔을 때 다른 주소로 보내주는 것을 말합니다.  www 리다이렉팅은 서브도메인과 DNS 글에서 언급한 것처럼 검색엔진은 메인도메인과 서브도메인을 별개의 도메인으로 취급하기 때문에 한곳으로 몰아줘 관리를 편하게 하기위함이지 꼭 안해줘도 되긴합니다. 다만 따로 관리할경우 웹마스터 도구같은 곳에서 대표 사이트URL을 정해 줄 필요가 있습니다.

고유 주소는 링크주소(URL)와 같은 의미라고 생각하시면 되지만 블로그 글은 사실 여러형태의 링크주소로 접근가능하다는 것을 상기해둡시다. 거기에 더해 블로그글은 변하지 않는 고유한 주소가 부여되게 됩니다.

워드프레스 블로그 글의 고유주소는 기본적으로 날짜와 이름으로 되어있습니다. 설치 후 당장 블로그에서 볼 수 있는 첫 글의 링크주소를 보면 아래처럼 되어있지요.

http://도메인이름/2017/06/12/hello-world/

제 개인적인 생각으로 위 링크주소 형태 중 년/월/일은 사실상 불필요한 정보라고 생각합니다. 링크주소만 길어지는데다가 블로그 글은 차후 업데이트가 가능하기 때문에 최초 작성일은 의미가 없습니다. 위에 나타난 첫 글은 Bitnami에서 2017년 6월 12일에 작성해둔 건가보네요. 블로그 글을 작성, 편집하면서 기본적으로는 고유주소 설정값에 따라 자동으로 고유링크가 입력되지만 이 링크주소 또한 그때그때 변경은 가능합니다. 하지만 아래처럼 뒷자리만 가능하죠.

글의 고유주소 편집

저는 주소가 짧은 것을 선호하므로 고유주소를 짧게 편집 할 수 있도록 퍼머링크를 변경해주겠습니다. 이런 것은 여러분의 선택사항인데요. 사이트운영 초반엔 괜찮지만 이미 링크가 여기저기 뿌려진 서버운영 중간엔 함부로 바꾸면 안되고 그에따른 리스크를 파악하고 모든 웹페이지 URL의 리디이렉팅에대한 대책을 먼저 마련한뒤 고려해야하겠습니다.

 고유주소 구조체계를 변경하려면 관리자페이지에서 설정 > 고유주소 메뉴에서 다른 표시방식을 선택합니다. 저는 사용자 정의 구조를 선호하는데 이경우 선호도에 따라 /post/%postname% 처럼 앞에 더 붙여주거나 뒷자리 슬래시 문자를 삭제할 수도 있습니다. 워드프레스 고유주소 변경

 



고유주소 변경에 대해 첨언하자면 글의 고유주소는 글을 처음 작성할 때 정하고 나면 다음부터는 바꾸지 말아야합니다. 여러분의 글 링크주소가 다른 웹사이트나 다른사람의 블로그, SNS에 올려져있는데 어느날 당신이 그 주소를 변경해버리면 다른 곳에 연결된 링크는 예전 그대로이기때문에 해당 글로 연결 될 수 없을 것인데다가 검색엔진이 인덱싱해간 주소도 끊어질 테니까요. permalink 는 permanent link 라고도 하는데 이유없이 ‘변하지않는 링크’라고 지어진 것은 아닌 것이죠.



이런 것을 방지하기 위해서 기존 글의 주소가 변경된경우 옛날 링크주소로 들어올경우 새주소로 리다이렉팅 되도록 해주는 Redirections 플러그인도 있습니다. 이러한 플러그인에서는 자신이 수동으로 리다이렉팅을 등록해줄 수도 있지요. 

이렇게 한번 정하고 나면 블로그 운영 중에 고유주소 구조를 다시 변경하지 말아야하므로 제가 워드프레스 설치 초기에 고유주소 구조를 정하도록 추천하는 이유이기도 합니다. 만일 중간에 필시 바꿔야겠다면 리다이렉팅 플러그인의 도움을 받아야 겠습니다.

제가 티스토리에서 블로그를 운영하던중에 도메인을 미리 붙였고 티스토리 링크주소를 숫자체계로 사용했었는데요. http://my-domain.com/123 과 같은 형태였습니다. 그리고 워드프레스 블로그로 글 주소를 그대로 쓰려했으나 워드프레스는 이렇게 도메인 바로뒤에 숫자만으로 이루어진 고유주소를 쓸 수 없게 되어있었습니다. 글을 작성할 때 http://도메인이름/123 이라고 변경해도 http://도메인이름/123-2로 변경되어 버리는데요.  워드프레스에서는 이미 이처럼 http://도메인이름/숫자/ 형태의 주소는 예약되어있기 때문이었습니다. 그래서 결국 리다이렉팅 플러그인으로 하나씩 지정해줘야 했죠. 

중간에 고유주소 구조를 바꾸는 것은 여러분들 마음이지만 그에따른 귀찮음도 따른 다는 것을 상기하시길 바랍니다. 

WWW 서브도메인 리다이렉팅 방법

이전에 언급했듯 오늘날에 와서 서브도메인 www.mydomain.com 주소나 메인도메인 mydomain.com 주소는 동일하다고 말씀드렸는데요.  서버에 도메인 연결하기 글까지 따라하고 도메인연결에 성공하셨다면 www.mydomain.com 으로 접속하면 브라우저 주소창에 www.mydomain.com 그대로, mydomain.com으로 접속하면 또 그대로 나타나는 것을 보실 수 있을 겁니다. 이렇게 되면 검색엔진은 두 개의 사이트에 같은글이 있는 것으로 인지될 수 있고 특히 네이버 검색에는 유사문서라는 것이 있기때문에 링크를 한 쪽으로 몰아주는게 좋겠습니다.  구글검색은 왠만해선 알아서 잘 판단하기에 큰문제는 없을지 모르겠네요.

제 블로그는 www.swiftcoding.org로 접속하든 swiftcoding.org로 접속하든 모두 swiftcoding.org로 연결되는 것을 보실 수 있습니다. 둘중 어느한쪽으로 리다이렉트 해줄지는 여러분의 선택입니다. 저는 지금처럼 www를 없앤 짧은 주소를 선호하지만 이 블로그 말고 다른 블로그는 티스토리에서 도메인을 붙였던 당시에 www 아니면 티스토리블로그에 도메인연결이 안되었던 관계로 워드프레스로 옮긴 지금도 www를 쓰고 있습니다. 당시에는 잘 모르던때였으니 이제와서 바꾸기도 그렇고 그냥 그렇게 쓰고 있습니다.

브라우저 캐시데이터와 인터넷 사용기록 삭제

리다이렉팅 테스트에 앞서서 언급해야할 것이 있는데 웹브라우저 캐싱에 관한 내용입니다. 여러분들이 사용하시는 웹브라우저들은 대게 한번 방문한 주소에대한 기록을 저장해둡니다. 여러분이 리다이렉팅 설정을 바꿔가면서 이것저것 테스트 해볼 때 서버의 설정을 바꾸고 아파치웹서버를 재시작해도 리다이렉팅 동작이 변경이 되지 않곤 하는데 그 이유는 웹브라우저가 방문했던 사이트를 기억하고 있다가 짧은 시간내에 이전에 방문했던 같은 도메인 주소를 입력하면 DNS를 거치지 않고 이전의 기록을 사용하기 때문입니다. 테스트를 몇번 해볼 요량이라면 서버설정변경, 아파치 재시작 후에는 여러분의 컴퓨터에서 캐시를 삭제해주고 접속을 시도하셔야합니다. 사파리 웹브라우저에서는 캐시를 삭제(개발자용 메뉴 > 캐시삭제)하면서 테스트해야하겠고, 크롬의 경우 설정 > 도구 > 인터넷 사용정보 삭제를 해가며 테스트 해보시기 바랍니다.

워드프레스 conf 파일 또는 .htaccess 파일 수정을 통한 리다이렉팅

서브도메인 리다이렉팅을 설정하려면 워드프레스 관리자 페이지에서는 손댈 수 없는 파일을 수정해야합니다.   XXXX.conf 또는 .htaccess 파일 둘 중 하나에서 수정해주면 됩니다. (비트나미 워드프레스에서 .htaccess를 사용하려면 이것을 허가하는 설정을 따로 해줘야합니다.)

이 중에 .htaccess 파일의 경우 검색최적화를 위해 많이들 쓰는 플러그인 Yoast SEO를 설치할 경우 Tools 메뉴에서 File Editor 링크를 통해 수정해줄 수는 있습니다. 그런데  .htaccess 파일은 워드프레스를 처음 설치했을 때는 존재하지 않다가 위에서 얘기한 고유주소 구조를 기본에서 다른 설정으로 바꾸는 순간 워드프레스 루트폴더에 생성됩니다.



비트나미 패키지는 .htaccess 파일 사용을 보안과 성능하락의 이유로 권장하진 않습니다만, 카페24같은 웹호스팅  서버의 경우 이 파일을 이용할 수밖에 없기때문에 인터넷에는 .htaccess에대한 내용이 주로 공유되어있습니다.

Bitnami 워드프레스의 XXXX.conf파일과 .htaccess 파일 위치

우선 두 파일의 위치를 설명하기 위해서 서버 접속과 제어방법 글에서 설명했던 것처럼 SFTP 클라이언트로 접속해 보겠습니다.

서버의 워드프레스 폴더 모습.
Transmit 5에서 워드프레스 폴더 보기

위 스크린샷은 서버의 비트나미 워드프레스 폴더인 /opt/bitnami/apps/wordpress/htdocs 폴더로 이동한 모습이고 이 곳에 .htaccess 파일이 존재하게 되지만 현재 보이지 않는데요. 한가지 알아둬야할 것은 리눅스에서 파일이나 폴더 앞에 점이 붙어있으면 이것은 숨김파일이라는 뜻입니다. 숨김파일이기 때문에 앞서 고유주소 구조를 변경했음에도 불구하고 이 파일이 보이지 않는 것이죠.

사용하시는 SFTP 클라이언트에서 숨김파일 표시 옵션을 켜줘야합니다. Transmit 5에서는 View 메뉴 > Show Invisible Files  (단축키 Shift + Command + B)를선택하고 나면 모든 숨김파일을 볼 수 있고 아래그림처럼 비로소 .htaccess 파일을 볼 수 있습니다.

숨김파일을 표시하니 htaccess 파일이 보인다.

 

반면 httpd.conf, htaccess.conf 처럼 xxx.conf 형태로 이루어진 파일들은 숨김파일이 아닌데요.  /opt/bitnami/apps/wordpress/conf 폴더안에서 찾아볼 수 있고, bitnami 워드프레스에서는 htaccess.conf와 여러개의 httpd-xxx.conf 파일로 나뉘어져 있습니다.

비트나미 워드프레스 conf 파일 위치

보통 자신이 직접 워드프레스를 다운받고 설치하면 httpd.conf 파일이 있겠으나 비트나미의 워드프레스는 그 내용을 목적별로 나누어 두었습니다. 그래서 htaccess.conf 파일 또는 httpd-로 시작하는 파일 셋 중 아무거나 수정해도 될텐데요. 저는 httpd-prefix.conf 를 수정하겠습니다.  파일안의 내용이 짧아서 제 설정을 넣기 좋은 곳이라고 생각하기 때문이죠.

SFTP 클라이어언트에서 바로 서버파일을 열어서 수정하겠습니다. 저처럼 맥에서 Transmit 을 사용하신다면 제 블로그에 Transmit 5 더블클릭 동작 변경하기를 참고해 보세요.

1) httpd-prefix.conf 파일을 열어서 리다이렉션 설정 코드 넣기

저처럼 httpd-prefix.conf 파일 변경을 통한 리다이렉션을 선택하셨다면 파일을 열어서 코드를 확인해봅니다. 그 중 아래와 같은 3줄이 있을텐데요. 이 세 줄은 삭제해줍니다.

RewriteEngine On
RewriteCond “%{HTTP_HOST}” ^ec2-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})\..*\.amazonaws.com(:[0-9]*)?$
RewriteRule “^/?(.*)” “%{REQUEST_SCHEME}://%1.%2.%3.%4%5/$1” [L,R=302,NE]

그리고 아래 3줄을 맨 위에 추가해주세요.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

아래처럼 말이죠

httpd-prefix.conf 파일을 수정해서 리다이렉션

위의 경우는 www가 붙은 주소www가 붙지 않은 주소로 리다이렉팅 하는 설정입니다. 그 반대를 원한다면 아래처럼 수정하면 됩니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

 

그리고 추가로 리디렉팅과는 상관없지만 이 파일을 연김에 아래 처럼  SubstituteMaxLineLength 20m 한 줄을 마지막줄 직전에 추가해주도록 합시다.

# 500 internal server error 방지
SubstituteMaxLineLength 20m

그리고 저장해서 서버에 파일이 수정완료되면 아파치나 서버를 재시작 해주세요. 아파치를 재시작하려면 서버에 SSH로 접속해서 아래의 CLI 명령어를 입력하면 됩니다.

sudo /opt/bitnami/ctlscript.sh restart apache

2) .htaccess 파일을 수정해서 리다이렉션 설정 코드 넣기

conf파일이 아닌 .htaccess 파일을 수정기로 선택했다면  /opt/bitnami/apps/wordpress/htdocs 폴더의 .htaccess 파일을 열어 수정하면 되는데요. Bitnami에서 만둘어둔 워드프레스는 단순히 이 파일 수정을 통해서 리다이렉션을 할 수 없습니다. 보안을 이유로 막아뒀기 때문이죠. 그래서 그 전에 httpd-app.conf 파일에서 설정코드를 한가지 바꿔줘야합니다.

/opt/bitnami/apps/wordpress/conf/httpd-app.conf

httpd-app.conf 파일 수정

 httpd-app.conf 파일 내용에서 /opt/bitnami/apps/wordpress/htdocs 경로에대한 설정값 중  AllowOverride None 을 위 스크린샷에 나온 것처럼 AllowOverride All로 변경해 저장하고 나서야 .htaccess 파일 수정을 통한 리다이렉션이 가능합니다.

이 때 .htaccess 파일 내용에는 RewriteEngine On 글자가 이미 있을 것이므로 그 아래 두 줄만 다음처럼 추가하면 됩니다

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

htaccess 파일 수정

제 경우 www가 붙은 주소를 붙지않은 주소로 리다이렉팅 하는 설정코드 두줄을 넣어줬습니다. 만일 www붙은 서브도메인으로 리디렉팅 해주고 싶다면 아래처럼 작성하면 됩니다.

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

그리고 저장 후 서버파일 수정이 완료되면 아파치나 서버를 재시작 해주세요. 아파치를 재시작하려면 서버에 SSH로 접속해서 아래의 CLI 명령어를 입력하면 됩니다.

sudo /opt/bitnami/ctlscript.sh restart apache

 

여기까지 1)번과 2)번중 둘중 하나의 방법으로 완료한뒤 브라우저 캐시, 방문기록을 삭제한뒤 테스트해보시면 한쪽 주소로 리다이렉팅 되는 것을 볼 수 있을 겁니다.

파일을 수정할 때 SFTP를 이용하지 않고 SSH로 접속해서 CLI 환경의 텍스트에디터 nano나 vi, vim 로 수정가능은 하지만 이글에서는 다루지 않겠습니다.

다음단계

이제 http 그대로 사용해도 되겠으나 최근 인터넷상황이 그리 녹록친 않습니다. 연재작 다음단계에서 HTTPS 설정 방법을 살펴보겠습니다.

15 댓글

  1. 정말 세세한 설명 감사합니다. 따라해보았는데요, 무식한 질문이 될 수 도 있지만, 두가지 방법 중에 어느것이 더 나을지요? 가령 1000개 정도의 페이지를 갖고있는 http 프로토콜에 있는 웹사이트를 bulk 로 https 로 리다이렉트 시킨다면, 어떤 방법이 더 나을까요?

    • 특별히 차이는 모르겠지만 일단은 2번째 방법으로 해두시는걸 추천합니다. 보통 워드프레스에대해 검색해보면 .htaccess파일 수정을 얘기하거든요. 자주 수정할 일은 없지만 리다이렉션이나 외부이미지 핫링크 금지같은 걸 검색해보면 해당파일에 살정값을 넣곤하거든요. 라이트세일에 있는 워드프레스 이미지눈 비트나미에서 커스텀한 워드프레스라서 해당파일을 못쓰게 락걸어두었으니 미리 풀어두는게 나을 수 있습니다. 더불어 YoatSEO플러그인에서 htaccess 파일 수정도 가능하게 되고요.

  2. 안녕하세요. 덕분에 아마존 라이트세일로 워드프레스 구축에 성공하였습니다. 정말 감사드려요. 질문이 하나 있는데요.

    제 경우에는 고유주소 설정에서 여전히 도메인 네임이 아니라 아이피 주소로 보이는데요.
    이거를 어떻게 도메인 네임으로 바꿀 수 있나요?

    예시)
    고유주소 설정: http://<strong><em>.</em></strong>.<strong><em>.</em></strong>/%post...
    고유주소 설정: http://(내 도메인 네임)/%post... -&gt; 이렇게요.

    아직 도메인 네임이랑 아이피가 제대로 연결이 되지 않은 것 같은데 워드프레스에서도 도메인 네임 연결을 위한 설정을 따로 해줘야 하는 것이 있나요?
    여전히 워드프레스에서는 사이트 주소가 도메인 네임으로 뜨지 않고, 고정 아이피 주소로 떠서요..

    혹시 이 것을 바꿀 수 있는 방법이 있다면 알려주시면 정말 감사하겠습니다.

    • 도메인으로 접속했을 때 웹브라우저 주소창에 도메인으로 나오지 않는다면 웹브라우저의 방문기록과 캐시를 지우고 다시 새창을 열어 시도해보세요. 그래도 안된다면 아직 DNS 설정이 반영되지 않았을 수도 있습니다.

      그리고 고유주소 설정과 도메인 연결은 관계 없습니다만, 고유주소 설정 페이지에 IP로 나오는 건 DB에는 사이트 URL이 아이피 주소로 기록되었기 때문일 텐데 이것은 우선 아래링크의 글을 따라서

      https://swiftcoding.org/https-cert#wp-config

      wp-config.php 파일에

      define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/');
      define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/');
      

      를 적어주시면 될겁니다. SSL 설정 전에는 앞에 http라는 것에 주의하고요. 최종 리다이렉션 주소가 www가 붙는다면 앞부분이 `’http://www.’ 이 되어야하겠습니다.

      • 빠른 답변 감사드립니다.

        제 경우에는 1년 정도 다른 웹 호스팅 업체에서 쓰다가 오늘 막 웹 호스팅은 아마존 라이트세일 / 도메인 서비스는 구글로 옮기던 참이었습니다. 방문 기록과 캐시를 지워도 여전히 예전 홈페이지가 뜨는 것을 보니 아직 DNS 설정이 반영이 안되었을 수 있을 것 같네요.

        사이트 주소는 지금 바꿔놓아야겠네요. 덕분에 HTTPS 인증 SSL 사이트 인증서도 받았습니다. 도메인만 새 사이트로 반영되면 큰 문제 없이 성공적으로 옮기게 될 것 같네요. 다시 한번 감사합니다.

        • 서버 이전과 도메인 서비스회사 이전을 함께 하는 건 좋지 않습니다. 도메인 서비스사 이전은 얼마나 걸릴지 모를 일이거든요.

          도메인이 안맞으면 인증서가 안되어야 할 텐데 그것도 이상하군요.

          • 운 좋게 오늘 다 되었네요. 자고 일어났더니 전부 제대로 바뀌어 있었습니다. 아마 DNS 설정이 반영이 안되서 그랬던 것 같습니다. 덕분에 정말 쉽게 옮길 수 있었습니다. 정말 감사드립니다. 앞으로 관리 때문에 자주 찾아뵐 것 같네요. ^^

  3. 안녕하세요.

    워드프레스로 홈페이지를 운영하고 있습니다.
    http에서 https로 바꾸는 과정에서 문제가 생겨 문의 드립니다.

    쉬운 방법으로 플러그인 설치하면 된다해서,
    다른건 설치하지 않고 플러그인(‘force https’) 설치 후 활성화를 눌렀는데 주소가 바뀌어 접속이 안되고 있습니다.

    이런경우 어떤 파일을 수정해야 하는지 궁금합니다.

  4. 안녕하세요. 워드프레스를 시작하면서 일주일에 3번씩은 방문하고 있는 워린이입니다.
    지금 리다이렉트 부분에서만 2주째 헤메고 있는데, 무엇이 문제인지 잘 모르겠습니다.
    물론 포스팅에 나와있는 대로 시도를 했구요.

    첫번째 시도때는 2번째 방법을 이용하여 시도를 했는데, 301 Moved Permanently Error가 떠서 인스턴스를 한번 갈았습니다.
    그리고 두번째 시도 때는 첫번째 방법을 이용하여 리다이렉트를 시도했구요(www non www 두가지 방법).
    하지만 역시나…
    301 Moved Permanently Error가 뜨네요..

    ‘Moved Permanently
    The document has moved here.

    Additionally, a 301 Moved Permanently error was encountered while trying to use an ErrorDocument to handle the request.’

    인터넷으로도 뚜렷한 해결책을 찾지 못해 이렇게 코멘트를 남깁니다….
    (물론 제가 못알아 먹은 탓이 큽니다. 영어 설명은 어렵거든요..)

      • 처음부터 따라했습니다!
        근데 이제 확인해보니깐 다행히도! 잘 작동하네요 ㅠㅠ
        리다이렉트 설정 이후 적용까지 약간의 시간이 필요한것 같습니다!
        스위프트님의 유용하고 알찬 포스팅에 항상 감사드립니다.

  5. 안녕하세요
    좋은 글 감사합니다.

    앞서 1월달에 연재작을 보며 워드프레스 세팅을 한번 완료했었던 적이 있었는데,
    lightsail 인스턴스를 날려버리며.. 다시금 동일 도메인을 가지고 세팅을 하고 있는 와중에 막히는 부분이 있어서 도움 부탁드립니다.

    인증서 발급을 위해
    ./certbot-auto certonly –webroot -w /opt/bitnami/apps/wordpress/htdocs -d jakdangmoi.com
    을 입력하고 나서…

    아래와 같은 에러가 노출됩니다.

    Import notes
    – the following errors were reported by the server:

    domain : jakdangmoi.com
    type : unauthorized
    detail : invalid response from htttp://jakdangmoi.com/.well-known/acme-challenge/QVIc8TPOikFpNFF1aAY06niFaRUzU5J…..
    [ ip주소 ]: “\n\n500 Internal Server Error\n\n

    <

    h1>Inter”

    to fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA recored(s) for that domain contain(s) the right IP address

    의심되는 부분은…

    1 도메인 재사용에 대한 연결오류..?

    재사용 이기는 하지만, 연재작에 나와있는 방식 그대로 다시 세팅하였습니다.

    2 동일 도메인으로 이전에 letsencrypt에서 진행을 한적이 있어서 그런 것일까요??

    부디 도움 부탁드립니다.
    감사합니다.

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)