나는한다개발 avatar

워드프레스 고유주소 원리

yjiq150

Published: 28 May 2018 › Updated: 28 May 2018워드프레스 고유주소 원리

워드프레스 고유주소 원리

워드프레스의 경우 글을 작성하면 "http://www.letmecompile.com/워드프레스-고유주소-원리" 라는 고유주소(permalink)를 갖는다. URL에는 디렉토리 구조처럼 나오면서도 워드프레스의 특정 포스트로 연결되는 이 고유주소는 어떻게 동작하는것일까?

apache http 서버의 mod_rewrite 모듈

apache의 모듈중에서 mod_rewrite 가 활성화 되어 있을경우 서버내의 .htaccess 파일에 RewriteRule을 정할 수 있다. 즉, 특정 RewriteCond을 만족하는 경우 지정된 RewriteRule이 적용되어 주소를 다시 쓰게 된다. 워드프레스의 고유주소를 위한 규칙은 다음과 같이 정의되어 있다.

RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]

의미 단위별 설명
RewriteEngine On
RewriteEngine 기능을 활성화한다.
RewriteBase /
주소를 다시 쓰길 원하는 시작(base) 부분 설정 한다. 예를들어 http://www.letmecompile.com/example/test 라는 요청이 들어왔을 때, RewriteBase가 /example 일 경우 test 부분만 rewrite 규칙이 적용되게 된다. 이경우에는 RewriteBase가 / 이므로 example/test 부분에 규칙이 적용된다.
RewriteRule ^index.php$ - [L]
^index.php$는 정규식으로 "index.php" 스트링 자체를 의미한다 따라서 index.php에 대한 요청이 들어올경우 아무것도 하지 않는다(-) 는 의미이다. [L]의 경우 뒤에 나오는 RewriteRule들을 더이상 적용하지 않고 rewrite 프로세스를 종료하겠다는 의미를 가진다.
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
%{REQUEST_FILENAME}를 이용하여 요청된 주소에 해당하는 파일(-f)이나 디렉토리(-d) 가 있는지 확인하고, 없을경우 어떤 주소로 요청이 되었던지간에(.) /index.php로 요청을 rewrite 한다.

즉, http://www.letmecompile.com/example-post-link 라는 요청이 http 서버로 들어왔을 때 조건식에 따라 example-post-link 라는 파일/디렉토리가 없을경우 해당 요청이 index.php 페이지로 전달된다. 따라서 index.php 안의 코드에서 $_SERVER['REQUEST_URI'] 변수를 통해 원래 요청 주소를 알 수 있고, 이를 이용해 DB에 저장된 고유주소(permalink)와 매칭되는 포스트를 불러오게 되는 것이다.

더 자세한 내용은 http://httpd.apache.org/docs/current/mod/mod_rewrite.html 를 참조.

Leave 워드프레스 고유주소 원리 to:

Written by

iOS/Web 개발자입니다.

Read more #kr posts


Best Posts From 나는한다개발

We have not curated any of yjiq150's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From 나는한다개발