我正在使用不直接支持 wsgi 应用程序的共享 cpanel 托管计划。所以我必须使用 wsgiref CGIHandler 解决方法,如下所述:http: //flask.pocoo.org/docs/0.12/deploying/cgi/。
这一切都有效并产生了预期的结果,但在 url 中总是有这些额外的东西:“/cgi-bin/index.cgi/”,python 应用程序似乎是自动添加的(以匹配它在 cgi 调用时检测到的内容处理程序)。
例如,我希望它是 myhost.com/login/ 而不是 myhost.com/cgi-bin/index.cgi/login/,或者是 myhost.com/ 而不是 myhost.com/cgi-bin/index.cgi /。
由于引擎重写规则已经到位,所有这些较短版本的链接都运行良好。我已经检查过了。这只是找到一种方法来告诉烧瓶应用程序摆脱“/cgi-bin/index.cgi/”的问题。
我的一些代码:
cat www/.htaccess
# Redirect everything to CGI WSGI handler, but Don't interfere with static files
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /cgi-bin/index.cgi/$1 [L]
.
cat www/cgi-bin/index.cgi
#!/home/myhost/myhost.com/flasky/venv/bin/python
import os
import sys
sys.path.insert(0, '/home/myhost/myhost.com/flasky/venv/lib/python2.7/site-packages')
sys.path.insert(0, '/home/myhost/myhost.com/flasky')
from wsgiref.handlers import CGIHandler
from manage import app
CGIHandler().run(app)
.
cat www/flasky/manage.py
#!/usr/bin/env python
import os
from app import create_app, db
from app.models import User, Role, Permission
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)
def make_shell_context():
return dict(app=app, db=db, User=User, Role=Role,
Permission=Permission)
manager.add_command("shell", Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
.
有任何想法吗?
谢谢!