아파치 rewrite module 켜서 .htaccess 활성화하기(우분투 기준)

일단 그린비&단미 블로그에서 본 태터툴즈 설치때 아파치 rewrite 모듈문제 해결법에 큰 신세를 졌음을 밝혀야겠다.

.htaccess 파일은 무엇인가?

.htaccess 파일은 apache 서버에서 각 폴더에 위치하면서 아파치 세팅을 폴더별로 변경할 수 있도록 하는 파일인데, 최근에는 주소 표시줄을 간단하게 고치는 데 많이 사용한다. 사용법은 간단하다. .htaccess라는 이름의 파일을 생성하고, 문법에 맞게 내용을 채우고, 적용하기 원하는 폴더에 넣으면 된다. .htaccess 앞에 붙는 점(.)은 리눅스 에서 숨김파일을 의미하는 파일명이다. 더도덜도 말고 정확히 ‘.htaccess’라는 이름으로 파일을 만들어야 한다. 윈도우에서 그냥 만들려고 하면 에러가 날 테고, 에디트 플러스 같은 데 들어가서 새 이름으로 저장을 선택하고 .htaccess 라는 이름으로 저장을 하면 만들어진다.

우분투에서 처음 apache2를 설치하면 rewirte module이 활성화 돼있지 않다. 무슨 말인고 하니, .htaccess 파일을 사용할 수 없다는 말이다.

아마 에러 로그를 살펴보면 아래와 같은 줄이 써 있을 것이다.

.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

.htaccess 파일은 자신이 위치한 폴더와 하위폴더에 영향을 미치는 아파치 설정 파일이다. 그런데 요놈이 요즘 많이 사용된다. 주소를 짧게 줄여 주기 때문이다.

독자가 프로그래머일 것이라고 가정하고 말한다. GET 방식으로 변수를 넘길 때 이런 식으로 주소 표시줄을 쓸 것이다.

http://mywebsite.com/content/index.php?no=500

index.php 파일을 불러오되, $_GET[no](PHP4까지는 그냥 $no로 받을 수도 있었지만 보안 문제 때문에 5부터는 그렇게 할 수없게 기본설정을 해 두었다. 만약 php5에서도 php4처럼 사용하고 싶다면 php.ini에서 register_globals = On으로 설정하면 된다.)에 500이란 값을 넣으라는 뜻인 걸 알고 있을 것이다.

그런데 .htaccess를 사용하면 이 주소를 아래와 같은 형식으로 바꿀 수 있다.

http://mywebsite.com/content/500

훨씬 간편한 주소가 되는 것이다.

이렇게 하는 이유는, 검색엔진이 주소를 읽기 쉽게 하기 위해서라고 한다.

rewrite_module은 그럼?

자, 앞서 말했듯, .htaccess 파일을 사용하기 위해서는 rewrite_module을 활성화시켜야 한다.

우분투에서 설치하는 아파치는 기본적으로 이 rewrite_module이 비활성화 돼있다고 한다.

(rewrite_module이 활성화돼있는지 아닌지 확인하는 방법은 위에서 소개한 태터툴즈 설치때 아파치 rewrite 모듈문제 해결법에 나와있으니 참고하기 바란다.)

그렇다면, 활성화하기 위해서, 일단 터미널에서 다음 명령어를 입력한다. 물론 관리자 권한으로 입력해야 한다. 관리자 모드로 접속하기 않는 경우가 많을 테니, 관리자 권한으로 명령을 실행할 수 있는 sudo를 앞에 붙여서 명령어를 쓰도록 하겠다.

sudo a2enmod rewrite

그리고 역시 root 권한으로 아파치 설정파일을 손봐줘야 한다.

이번엔 Alt+F2를 눌러서 노틸러스(우분투의 파일 탐색기)를 관리자 권한으로 실행시켜 보자.

Alt+F2를 눌렀을 때 뜨는 창에 아래와 같이 입력하고 엔터를 치자.

gksu nautilus

그러면 관리자 권한으로 노틸러스가 실행된다.

(물론 굳이 Alt+F2를 누르지 않고 터미널에서 바로 입력해도 무방하다.)

/etc/apache2/apache2.conf 수정

자, 탐색을 해서 /etc/apache2/apache2.conf 파일을 수정하자. gedit로 열면 되겠다. 아마 더블클릭하면 될 거다. 실행할 거냐 뭐할 거냐 이런 식으로 묻는다면 ‘보기’를 선택한다.

여기에 다음 설정을 추가해 준다.

<IfModule mod_rewrite.c>
rewriteEngine On
</IfModule>

그리고 또 하나 남았다.

/etc/apache2/sites-enabled/000-default 수정

또 탐색을 해서 /etc/apache2/sites-enabled/000-default 파일을 열자.

여기에서 다음을 수정한다.

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny

위에서 AllowOverride 항목이 아마 none이나 deny로 돼 있을 것이다. 저걸 all로 고쳐 준다.

all이 보안에 별로 안 좋고 다른 걸 써 주는 게 낫지 않냐는 의견을 본 적도 있는데 내가 모르니까 패스한다.

만약 가상 호스트(virtual host)를 사용하고 있다면 거기서도 AllowOverride가 none이나 deny로 돼 있지 않은지 확인해 봐야 한다.

아파치 재시작(apache restart)

다 해놓고 왜 안되지 고민하지 않길 바란다.

아파치 재시작 명령어를 입력해 줘야 한다.

sudo /etc/init.d/apache2 restart

위 명령어를 입력하면 종료. 이제 잘 될 것이다.

만약 잘 안 된다면? 이럴 땐 반드시 에러 로그를 확인한다. 그게 편한 길이다.

.htaccess의 권한 확인

나는 다음과 같은 에러 로그가 찍혀 있었다.

[Tue Apr 19 13:27:58 2011] [crit] [client 127.0.0.1] (13)Permission denied: /home/mytory/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

근데 이게 환장할 노릇인 게, 분명 .htaccess를 777로 권한 변경을 해 줬기 때문이었다.

검색을 해 보고서야 알았다. mytory 폴더가 읽을 수 없게 돼 있었다. 즉, 폴더와 .htaccess 권한 둘 다를 아파치가 읽을 수 있게 만들어 줘야 한다.

.htaccess는 기본적으로 숨김파일이다. 노틸러스에서 편집-기본 설정 으로 들어간 후 숨김/백업파일 보기에 체크를 해 주면 볼 수 있다.(혹은 Ctrl+H)

파일을 선택하고 속성을 보면 권한 탭이 있다. 여기서 누가 소유자며 누가 읽을 수 있는지 등을 설정할 수 있다.

[덧] 위대로 다 실행했는데 안 되면 다른 원인이 있는 것이다. rewrite모듈 말고 다른 원인을 찾아 보기 바란다. 예컨대, 나는 rewrite 모듈 때문이 아니라 register_grobals 때문에 계속 오류가 났었다. 이 글의 각주 1번을 참고하면 도움이 될 것이다.

카테고리 글 목록 👉

대표글

“아파치 rewrite module 켜서 .htaccess 활성화하기(우분투 기준)”에 대한 5개의 응답

  1. 내가 운영하는 left21 웹마스터 블로그 주소가 바뀌었다. 원래는 설치형이었는데 textcube로 옮긴 것이다. 도메인은 레프트21 것을 사용해서 webmaster.left21.com 이다. 이 때, 사람들에게야 공지를 해서 “여기로 바뀌었습니다.” 하면 되겠지만, 검색엔진에는 그런 식으로 못한다. 지금까지 쌓아올려 두었던 검색엔진에서의 순위를 다 포기해야 하는 것이 될 수도 있단 말이다! 여기 사례가 있다 : 구글 웹마스터 센터, 웹마스터 도구에..

  2. […] FollowSymLinks AllowOverride FileInfo 를 해줘야 한다. -출처:  아파치 rewrite module 켜서 .htaccess 활성화하기(우분투 기준) PHP파일 문제 – [Ubuntu 11.10 LTS] php파일이 열리지 않고, 다운받아지는 경우 […]

  3. 안녕하세요. 이 글로 제 XE가 작동이 잘 안되는 문제를 수정했습니다. 감사합니다.

    나중에 잊지 않게 퍼가도 될까요?

    1. 이메일에 긁어 가시거나 개인적으로 보관하시는 건 아무 상관 없습니다만 블로그 같은 데 공개하시는 건 안 됩니다. 제 블로그는 적어도 몇 년간은 사라지지 않을 테니 걱정하지 마세요. ^^ 블로그에 퍼가시는 경우 부분 인용 후 링크 걸어 주세요. 아니면 깨달은 바를 직접 자신의 블로그에 정리하시는 것도 좋은 방법이라고 생각합니다. 저도 그렇게 하고 도움 얻은 곳의 링크를 건 거니까 말입니다.
      (제 블로그의 페이지를 통째로 다운받아서 (Ctrl+S) 압축한 뒤, 부분인용한 글에 첨부파일 형태로 두는 건 괜찮습니다.)

  4. […] 아파치 rewrite module 켜서 .htaccess 활성화하기(우분투 기준) | 웹으로 말하기. […]

JHRunning 에 응답 남기기응답 취소