[web] 같은 디렉토리에서 서로 다른 도메인 띄우기 (apache설정 VirtualHost, DirectoryIndex 사용)

흠.. 제목만 보면 잘 감이 안올 수 있는데…
홈페이지를 만들다보면…
게시판 하나만 별도의 도메인으로 다루고 싶을때가 있다.
보통 게시판마다 별도의 주소(URL)가 있긴 한데.. 주소치자니 귀찮고.. 도메인을 아에 따로 하나 쥐어주고 싶은데.. 귀찮아서 기존 도메인이랑 같은 디렉토리를 쓰려고 할때..
뭐 방법이야 여러가지가 있겠지만..
인터넷에서 찾아보면.. 보통 index.php를 만들어서.. $_SERVER[“HTTP_HOST”] 값을 비교해서 해당 URL로 링크 띄워주는 방식을 추천한다..
난 index.php에서도 또 별도로 하는게 있어서..(ddns사용중인 adsl이 살았으면 바로 그쪽 유동ip로 연결하는 작업을 index.php에서 한다.)
그냥 apache httpd.conf에 설정해버렸다.

httpd.conf 에 virtualhost 설정하는 부분이 있는데..
그중에 DirectoryIndex 항목을 추가해준다.

<VirtualHost *:80>      # <--  원래있던 내용
    ServerAdmin admin@server.com
    DocumentRoot /home/myhome/public_html
    ServerName server.com
    ServerAlias www.server.com
    ErrorLog logs/www.server.com-error_log
    CustomLog logs/www.server.com-access_log common
</VirtualHost>

<VirtualHost *:80>   # <-- 복사해서 하나 더 만든다.
    ServerAdmin admin@server.com
    DocumentRoot /home/myhome/public_html
    ServerName test.server.com    # <-- 도메인 설정해주고
    DirectoryIndex test_index.php   # <-- 추가한다.
    ErrorLog logs/test.server.com-error_log
    CustomLog logs/test.server.com-access_log common
</VirtualHost>

이렇게 하면.. 해당 도메인(test.server.com)으로 접속하면 index.php가 아닌 test_index.php를 찾게 되므로..
해당 test_index.php에다가 원하는 게시판 주소로 가게 해놓으면 된다..

근데.. zb4를 쓸때는 잘 됐는데…
얼마전에 xe로 바꿨더니.. 이상하게 잘 안되는 것이다..
메인 도메인으로는 잘 됐는데… test도메인으로 들어가면 해당 게시판은 잘 뜨나, 로그인이라던가.. 하여튼.. 뭔가 액션을 취하려면 잘 안된다..

왜그럴까.. 에러는 403인데.. 원 도메인이랑 같은 디렉토리를 사용하니.. 권한(<Directory …> 부분)은 아닌것 같고.. 도메인 부분인데.. 그럼 VirtualHost 부분인데..
여긴 뭐 권한이나 옵션 설정하는것도 없고.. 이상하다..
하고 한참을 고민했는데..
원래 VirtualHost 부분을 복사해서 해보기도 하고.. 했는데.. 결국 알아냈다..
편하게 쓰고자 했던.. DirectoryIndex 부분.. -_-;;;
httpd.conf 에 원래 DirectoryIndex부분이 있고..
난 VirtualHost에 또 설정하면.. 기존것 상속도 하고 저기에 설정해놓은게 더 우선순위가 먹는줄 알았는데..
그게 아닌가보다.. 기존게 그냥 무시되고.. VirtualHost에 적어놓은것만 인식하는듯..
그래서 xe/ 밑에 index.php를 불러오질 못하고, test_index.php를 찾으려하니 없어서 오류가 나는 듯

해서.. 원래 있던 값들을 추가해줬다.

 

<VirtualHost *:80>   # <-- 복사해서 하나 더 만든다.
    ServerAdmin admin@server.com
    DocumentRoot /home/myhome/public_html
    ServerName test.server.com    # <-- 도메인 설정해주고
    DirectoryIndex temp_index.html index.php index.html   # <-- 또 추가한다.
    ErrorLog logs/test.server.com-error_log
    CustomLog logs/test.server.com-access_log common
</VirtualHost>

이렇게 했더니 잘 돌아간다.. -_-;;

기존의 zb4에서는 거의 모든 링크들이 온전한 링크인데.. xe에서는 rewrite_mode를 활용하기도 하고 해서.. 디렉토리 뒤에 /?mid= 이런식으로도 많이 쓴다..
그러니 index.php를 못찾아서 에러가 났던 게지.. -_-;;
흠… 하여튼.. 난 고생했던거라.. 포스팅 한다..
(근데.. 나처럼 VirtualHost에 DirectoryIndex 설정해서 쓰는 사람 별로 없을 듯..)

Loading