2009-05-19 2 views
3

아파치 2를 사용하여 도메인 요청이 파이썬 CGI 스크립트로 전달되도록 내 웹 사이트를 구성하고 싶다. 기본적으로 사용자가 http://www.example.com으로 간다면 cgi /cgi-bin/cgi.py를 실행하고 싶습니다. 사용자가 http://www.example.com/index.rss에 가면 /cgi-bin/cgi.py가 /index.rss를 인수로 사용하여 실행되도록합니다. 나는 ScriptAlias와 Rewrite의 다양한 조합을 시도해 보았고 올바른 관계로 그들을 얻을 수없는 것처럼 보였다.CGI 스크립트가 아파치가있는 도메인에 대한 모든 요청을 잡는다.

답변

1

는 (확실하지 올바른 사람 자신의 질문에 대답과 절차에 -하지만 ...) 내가는 ScriptAlias와 RewriteRule의 충돌을 가진 것처럼

보인다. 결국 솔루션은 AddHandler를 사용하여 관계를 생성 한 다음 mod_rewrite를 사용하여 모든 것을 CGI로 가져 오는 것이 었습니다./RewriteCond는/resource/및/media/catching을 방지합니다. 내 VirtualHost는 이제 다음과 같이 보입니다 :

AddHandler cgi-script .cgi 
RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/resources/.*$ 
RewriteCond %{REQUEST_URI} !^/media/.*$ 
RewriteRule ^(.*)$ /cgi-bin/pyblosxom.cgi$1 [L] 

도움 주셔서 감사합니다.

0

당신이 찾고있는 것이 100 %는 아니지만 여기에 오래된 버려진 버려진 도메인에서 사람들을 올바르게 리디렉션하기 위해 사용하는 .htaccess가 있습니다. 기본적으로 로컬 디렉토리 구조에없는 파일이나 디렉토리를 리디렉션합니다. 그것은이 요구 된 어떤 URL 알아 내기 위해 스크립트 자체에 달려 있습니다 :

RewriteEngine On 

#if the request isn't for a file or a directory... 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 
2
RewriteEngine On 

RewriteRule ^(.*)$ /cgi-bin/cgi.py?url=$1 

이 당신의 파이썬 파일에 대한 모든 요청을 리디렉션합니다. 여전히 스크립트 별칭에 문제가있는 경우 RewriteRule 행 끝에있는 [PT] 통과 플래그를 추가하십시오. 이미지 등을 계속 액세스하려면 RewriteRule 앞에 다음을 추가하십시오.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
0

캡쳐 다시 쓰기 규칙을 사용하여 어느 정도까지 작동했습니다. 문제는 $ 1을 (를) 사용하는 경우 요청 URI의 원래 쿼리 문자열이 cgi에 전달되지 않았다는 것입니다. 결국 캡처를 제거하고 내 cgi 스크립트에서 ENV [ 'REQUEST_URI']를 참조하여 액세스 권한을 얻었습니다.

관련 문제