« 500 Internal Server Error | Main | 호흡을 아래로 »

리다이렉션과 펄스크립트실행 테스트

500 Internal Server Error이후 아무리 테스트를 해봐도 스크립트에 문제가 있는것은 아닐꺼다는 결론을 내렸습니다. 그렇다면 서버설정에 문제가 있다는 것으로 심증을 굳히고 그것을 확인하기 위해 두 곳에서 동일한 테스트를 실행했습니다. 현재 문제가 있는 제 계정과 다른 호스팅회사를 이용하는 아는 사람의 계정을 빌려서 테스트했습니다.

1. 웹루트 폴더 아래 .htaccess라는 파일을 만들고 그 안에 ErrorDocument 404 /blog/error.cgi 내용을 삽입하고 저장합니다. (이 조작으로 파일없음 404 에러가 발생할 경우에 지정한 웹루트 폴더 밑의 blog폴더 아래 error.cgi로 연결됩니다.)

2. /blog 폴더아래에 error.cgi라는 펄 스크립트를 만들고 아래와 같이 입력한 뒤 파일의 권한은 755로 변경합니다.

#!/home/bin/perl -w
use CGI qw/:standard/;
my $q = new CGI;
print $q->redirect('http://yongsang.com');

(스크립트가 실행되면 CGI객체를 생성하고 객체에서 지정한 주소로 리다이렉트를 실행시킵니다.)

3. 확인을 위해 웹브라우저 주소창에 http://도메인주소/blog/아무 이름의 파일명.html 을 입력합니다.

위와 같은 간단한 테스트를 했을때 제가 아는 사람의 서버에서는 error.cgi 스크립트 맨 마지막줄에 지정한 주소로 홈페이지가 잘 연결되는 것을 확인했습니다.

그러나 애석하게도 제 서버에서는 위와 같은 테스트가 실패했습니다. 파일없음 404 에러가 발생해도 .htaccess파일이 무시되기 때문에 error.cgi 스트립트로 연결되지 않기 때문입니다. 그러니 당연히 error.cgi가 실행되지도 않은 겁니다. 그래서 .htaccess파일을 여러곳으로 옮기면서 시도해보니 가까스로 error.cgi로 연결은 할 수 있었지만 그 내용이 실행되지는 않았습니다.

자료를 찾아보았더니 두가지 조치가 필요한 것으로 생각됩니다.

1. .htaccess 파일을 사용할 수 있도록 설정을 변경

2. 호출한 스크립트가 실행될 수 있도록 설정을 변경.

이렇게 하려면

httpd.conf 파일의 295번째줄정도

Options FollowSymLinks
AllowOverride None

문구가 있는데.. 이것을

Options FollowSymLinks ExecCGI
AllowOverride All

로 변경합니다. 또

#AddHandler cgi-script .cgi
이렇게 되어 있는 문장을
AddHandler cgi-script .cgi
로 주석을 제거합니다.

여기까지 확인하고 호스팅업체에 이 내용을 반영해줄 것을 요청했습니다.

TrackBack

TrackBack URL for this entry:
http://yongsang.com/blog/mt-tb.cgi/265

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on 2004年11月05日 23:00.

The previous post in this blog was 500 Internal Server Error.

The next post in this blog is 호흡을 아래로.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31