2011-01-20 29 views

Trả lời

10

Nếu bạn đang chạy máy chủ dev (không apache):

Tạo một thư mục (hay còn gọi là thư mục) được gọi là tĩnh ở vị trí của kịch bản chạy server web.py. Sau đó, đặt các tệp tĩnh mà bạn muốn phân phối trong thư mục tĩnh. Ví dụ: URL http://localhost/static/logo.png sẽ gửi hình ảnh ./static/logo.png cho khách hàng.

tham khảo: http://webpy.org/cookbook/staticfiles


Update. Nếu bạn thực sự cần phải phục vụ cho một tập tin tĩnh trên / bạn chỉ có thể sử dụng một chuyển hướng:

#!/usr/bin/env python 

import web 

urls = (
    '/', 'index' 
) 

class index: 
    def GET(self): 
     # redirect to the static file ... 
     raise web.seeother('/static/index.html') 

app = web.application(urls, globals()) 

if __name__ == "__main__": app.run() 
+0

chỉ phân phối tệp trong/đường dẫn tĩnh, tôi cần phân phối index.html theo yêu cầu với đường dẫn/ – codez

+0

@codez: Đã cập nhật câu trả lời của tôi. – miku

+0

tính năng này chỉ hoạt động nếu bạn chạy ứng dụng web.py trực tiếp từ thư mục chứa nó. nếu bạn muốn chạy /path/to/my/web/app.py bạn không may mắn. – Octopus

6

tôi vật lộn với điều này cho hai vợ chồng cuối cùng của giờ ... Yuck!

Tìm thấy hai giải pháp mà cả hai đều làm việc cho tôi ... 1 - trong .htaccess thêm dòng này trước dòng ModRewrite:

RewriteCond %{REQUEST_URI} !^/static/.* 

Điều này sẽ đảm bảo rằng yêu cầu đến/tĩnh/thư mục là KHÔNG viết lại để đi đến kịch bản code.py của bạn.

2 - trong code.py thêm một handler tĩnh và một mục url cho mỗi một số thư mục:

urls = (
    '/' , 'index' , 
    '/add', 'add' , 
    '/(js|css|images)/(.*)', 'static', 
    '/one' , 'one' 
    ) 

class static: 
    def GET(self, media, file): 
     try: 
      f = open(media+'/'+file, 'r') 
      return f.read() 
     except: 
      return '' # you can send an 404 error here if you want 

Lưu ý - Tôi lấy trộm này từ nhóm web.py google nhưng không thể tìm thấy dang đăng bài nữa!

Một trong những hoạt động được, cả trong các mẫu cho web.py và cho một cuộc gọi trực tiếp đến một trang web mà tôi đưa vào "tĩnh"

+0

Bạn có thấy một số lợi ích cho các phương pháp này trên http://webpy.org/cookbook/staticfiles không? – dimo414

+0

Tôi đã làm việc này - tôi không thể có được các phương pháp khác để làm việc, vì vậy tôi đoán đó là một lợi thế ;-) Tôi đã làm việc trên một tài khoản chia sẻ lưu trữ để có thể có được một số cuộc đấu tranh của tôi. –

+1

@tom - cảm ơn! bạn đã lưu tôi một vài giờ với bài đăng này. – incognick

1

tôi không khuyên bạn nên phục vụ các tập tin tĩnh với web .py. Bạn nên có apache hoặc nginx cấu hình cho điều đó.

+0

tại sao không? nó sẽ có ích để hiểu lý do của bạn. – Octopus

+0

Vì nó sẽ chậm –

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