아파치에서 rewrite 모듈을 활성화 하기 위해서는 httpd.conf 파일에서 rewrite_module 를 로드해야한다. 기본적으로 httpd.conf 파일의 위치는 설치된 OS 즉 운영체제에 다르겠지만 Cent OS 를 기준으로 말씀드리겠습니다.
/etc/httpd/conf/httpd.conf 위치에 해당 파일이 있습니다. 이 파일을 vi 에디터를 통해서 보면은 하단에 LoadModule 이 있는 부분이 있는데요. 거기에서 아래와 같은 문장에 주석(#)이 되어있는지 체크합니다.
LoadModule rewrite_module modules/mod_rewrite.so
만약에 rewtire 모듈이 정상적으로 로드가 되도록 되어있다고 한다면 웹 폴더 경로에서 .htaccess 파일을 확인해 봐야 합니다. 만약에 .htaccess 파일이 없다면 생성을 하셔야 합니다. 그리고 .htaccess 파일의 첫 시작 부분에 RewriteEngine on 을 적어주어야 합니다.
아래의 예시는 제가 개인적으로 사용하는 예시인데요. RewriteCond 는 rewrite condition 의 줄임말로 어떠한 조건일때라는 것을 의미하구요. RewriteRule 은 RewriteCond 의 조건에 해당된다면 어떻게 하라는 룰을 지정하는 것이라 생각하시면 됩니다. 아래의 예시는 URL 주소에서 입력된 내용이 폴더가 아니거나 또는 파일이 아닌 경우에 확장자 php 를 붙이는 방법이라 보시면 됩니다. 그리고 맨 하단에 있는 ErrorDocument 는 각 해당되는 에러코드에 따라서 어떠한 파일로 연결되게 할지를 설정할 수 있는데요. 여기서는 무조건 errors.php 로 연결되도록 하였습니다. RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+) $1.php ErrorDocument 400 errors.php ErrorDocument 403 errors.php ErrorDocument 404 errors.php ErrorDocument 405 errors.php ErrorDocument 408 errors.php ErrorDocument 500 errors.php ErrorDocument 502 errors.php ErrorDocument 504 errors.php |
그런데 만약에 위의 2개의 설정을 했는데요 rewrite 모듈이 정상적으로 동작하지 않는다면 .htaccess 파일을 파싱하는 부분에서 문제가 있는것인데요. 저의 경우에는 virtual host 를 두어서 한 서버에서 여러개의 도메인으로 서비스를 하고 있는데요. 이런 경우에 권한 문제 때문에 문제가 생길 수가 있습니다.
저는 /etc/httpd/conf/httpd.conf 파일의 맨 하단에 아래와 같이 작성하였습니다. 아래와 같이 하면 아파치에서는 httpd-vhosts.conf 파일을 읽게 됩니다.
# Virtual hosts Include /etc/httpd/conf/httpd-vhosts.conf |
아래는 httpd-vhosts.conf 의 예시입니다. 그런데 아래와 같이 했더니 rewire module 이 동작을 않하는 것입니다.
<VirtualHost *:80> DocumentRoot /var/www/html/home ServerName home.mydomain.com </VirtualHost> |
<VirtualHost *:80> DocumentRoot /var/www/html/home ServerName home.mydomain.com <Directory "/var/www/html/home"> Order allow,deny Allow from all AllowOverride All </Directory> </VirtualHost> |
'IT News > PHP' 카테고리의 다른 글
PHP 에서 크로스도메인 처리 및 전역변수 사용하기 (0) | 2018.10.16 |
---|---|
putty로 원격접속해서 mysql 에서 db export (mysqldump)를 하는 방법, 추가로 crontab 으로 주기적 백업방법 소개 (0) | 2018.09.04 |
mysql 디비를 로컬(localhost)에서 import 하는 방법 (0) | 2018.09.04 |