2010-04-18 1 views
6

CGI 환경에서 bottle.py를 사용하여 올바르게 반환하는 데는 간단한 인덱스 이상을 얻는 데 어려움을 겪고 있습니다. 돌아올려고 할 때/안녕하세요, 404 응답을 받았습니다. 여기CGI 및 Bottle.py를 사용하여 라우팅 URL에 문제가 발생했습니다.

import bottle 
from bottle import route 

@route('/') 
def index(): 
    return 'Index' 

@route('/hello') 
def hello(): 
    return 'Hello' 

if __name__ == '__main__': 
    from wsgiref.handlers import CGIHandler 
    CGIHandler().run(bottle.default_app()) 

/index.py/hello 신청하는 경우 그러나, 나는 DH를 사용하고 나는 여기에서 코드의 대부분을 복사

DirectoryIndex index.py 
<ifmodule mod_rewrite.c=""> 
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.py/$1 [L] 
</ifmodule> 

내 htaccess로 파일이며 해당 듯 : http://blog.coderonfire.com/2010/02/running-bottle-python-micro-framework.html

도움을 주셔서 감사합니다.

답변

4

문제는 <ifmodule> 블록이 Apache 서버와 관련이 없으며 mod_rewrite에 대한 지시문이 작동하지 않는다는 것입니다. 다음 .htaccess으로 시작한 다음 필요에 따라 현재 Apache 버전에 따라 블록을 추가하십시오.

DirectoryIndex index.py 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.py/$1 [L] 
+1

감사합니다. 나는 preceeding/on /index.py/$1을 제거해야했지만 완벽하게 작동합니다. – Risingson

+0

@enrico, 나는 편집을 좋아하지 않습니다. RewriteBase를 제거하는 대신 선행 슬래시를 제거하는 것이 좋습니다. – newtover

+0

RewriteBase를 설정하는 것이 슬래시 일 때 과도한 것처럼 보일 수 있지만, 변경 사항이 있으면 쉽게 변경됩니다. 그러나, 내가 중요한 슬래시를 제거하지 않은 진정한 이유는 바보 같은 "중요 편집"필터 때문에 적어도 6 자 이상이어야한다는 것입니다. 당신이 그것을 다시 넣을 수 있으며 슬래시를 제거하는 경우 귀하의 취향입니다. – Enrico

관련 문제