网站地图 联系我们

学习python首选-实战python学习班,专注于python高级工程师培养,python课程:包括Python核心编程技术、全栈开发、网络爬虫、人工智能等。python全栈工程师+提高工作经验,获取免费试听课程!
当前位置: python培训 > python学习 > 常见问题 > 正文

在Bluehost的子目录上部署Flask碰到url重定向难题

来源:肚皮舞 浏览量: 发布日期:20-05-10 14:32:27 调整字体大小【 【所属栏目:常见问题】

  在Bluehost的子目录上部署Flask碰到url重定向难题

  Bluehost的主机一般web的根目录是public_html(别名是www)。由于根目录下面放的是网站首页,不能乱动,因此为了部署新的应用,我在public_html下建了app这个目录。

  在app下设置.htaccess,内容如下:

  Options +ExecCGI

  AddHandler fcgid-script .fcgi

  RewriteEngine On

  RewriteBase /app/

  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]

  在app下设置index.fcgi,内容如下:

  #!/mypath_to_python

  import sys

  sys.path.insert(0, '/mypath_to_site-packages')

  from flup.server.fcgi import WSGIServer

  from index import app

  class ScriptNameStripper(object):

  def __init__(self, app):

  self.app = app

  def __call__(self, environ, start_response):

  environ['SCRIPT_NAME'] = ''

  return self.app(environ, start_response)

  app = ScriptNameStripper(app)

  if __name__ == '__main__':

  WSGIServer(app).run()

  部署一个简单的hello world应用,index.py,内容如下:

  from flask import Flask

  app = Flask(__name__)

  @app.route("/")

  def hello():

  return "Hello World!"

  if __name__ == "__main__":

  app.run()

  输入http://abc.com/app,一切正常。

  于是我开始增加一个登录功能,当用户访问首页http://abc.com/app时,如果发现用户没有登录,自动跳转到http://abc.com/app/login。于是我改写了index.py如下:

  from flask import Flask, request, url_for, render_template, redirect, session

  app = Flask(__name__, static_url_path='/static')

  @app.route('/', methods=['GET'])

  def home():

  if not session.get('user'):

  return redirect(url_for('login'))

  else:

  return render_template('home.html')

  @app.route('/login', methods=['GET', 'POST'])

  def login():

  if request.method == 'GET':

  return app.send_static_file('login.html')

  else:

  user = request.form.get('user')

  password = request.form.get('password')

  if user == 'joy' and password == 'joy':

  session['user'] = user

  return render_template('home.html')

  else:

  return 'LOGIN FAILED'

  部署的目录结构如下:

  public_html (对应abc.com)

  |--app (这里对应abc.com/app)

  |--.htaccess

  |--index.fcgi

  |--index.py

  |--static

  |--login.html

  |--templates

  |--home.html

  就这么一个简单的应用,部署上去以后,访问http://abc.com/app,本来期望的效果是直接跳转到http://abc.com/app/login,加载静态登陆页面login.html,让用户属于登录信息。但实际得到的效果确是跳转到http://abc.com/login,导致了404找不到页面的错误。我试了很多很多方法,都没搞定,求助大家。

标签:
肚皮舞新闻动态News Center

肚皮舞视频

肚皮舞培训课程

联系卡伊丝contact us
联系我们
python培训「零基础入门到精通」python人工智能编程培训班-0798wz.com

咨询热线:18301225663