2010-04-18 16 views
6

Tôi đã gặp khó khăn khi nhận bất kỳ thứ gì nhiều hơn một chỉ mục đơn giản/trả lại chính xác bằng cách sử dụng bottle.py trong môi trường CGI. Khi tôi cố gắng trả lại/xin chào, tôi nhận được phản hồi 404. Tuy nhiên, nếu tôi yêu cầu /index.py/helloCác sự cố với URL định tuyến bằng CGI và Bottle.py

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()) 

Và đây là tập tin .htaccess tôi

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

tôi sao chép hầu hết các mã từ đây khi tôi đang sử dụng DH và nó dường như có liên quan : http://blog.coderonfire.com/2010/02/running-bottle-python-micro-framework.html

Cảm ơn bạn đã trợ giúp.

Trả lời

4

Vấn đề là khối <ifmodule> không liên quan đến máy chủ Apache của bạn và các chỉ thị cho mod_rewrite không hoạt động. Bắt đầu với .htaccess và sau đó nếu bạn có nhu cầu, hãy thêm khối theo phiên bản apache hiện tại của bạn.

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

Cảm ơn, công trình này. Tôi đã phải loại bỏ preceeding/on /index.py/$1 nhưng sau đó nó hoạt động hoàn hảo. – Risingson

+0

@enrico, tôi không chắc chắn tôi thích chỉnh sửa của bạn. Tôi sẽ loại bỏ các dấu gạch chéo hàng đầu thay vì loại bỏ các RewriteBase. – newtover

+0

Đặt RewriteBase có vẻ quá mức khi nó chỉ là dấu gạch chéo, nhưng chắc chắn làm mọi thứ dễ dàng hơn nếu điều đó thay đổi. Tuy nhiên, lý do thực sự tôi không chỉ xóa dấu gạch chéo hàng đầu là bản chỉnh sửa cần phải có ít nhất 6 ký tự, do bộ lọc "chỉnh sửa quan trọng" câm. Bạn có thể đặt nó trở lại và loại bỏ dấu gạch chéo nếu đó là sở thích của bạn. – Enrico

Các vấn đề liên quan