Flask adds trailing slash to URL, no routes match
根据标题,Apache2.4似乎在URL后面附加了"/"(根据
(相关)文件结构
1 2 3 4 5 6 7 8 | /var/www/wsgi ... ├── dizmo │ └── __init__.py ├── foo.wsgi ├── hello1.wsgi └── __pycache__ └── adapter.cpython-35.pyc |
foo.wsgi公司
1 2 3 4 | import sys import inspect sys.path.append('/var/www/wsgi') from dizmo import app as application |
号
迪兹莫/uuu init_uuuuy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from flask import Flask, request import inspect import sys app = Flask(__name__) app.debug = True print("app.config['SERVER_NAME']={}".format(app.config['SERVER_NAME']) ) print("{}:{} (outside)".format( inspect.currentframe().f_code.co_filename, inspect.currentframe().f_lineno ) ) @app.route('/foo') @app.route('/foo/') def tattletale(): return 'I\'m foo' @app.errorhandler(404) def err_handler_404(error): return '{}: no route'.format(request.url), 404 |
我的网站.conf
1 2 3 4 5 6 7 8 9 10 11 12 | <VirtualHost *:9000> <Directory /var/www/wsgi> Require all granted DirectorySlash Off </Directory> WSGIDaemonProcess CDRDB processes=2 threads=15 display-name=%{GROUP} python-path=/var/www/python-packages WSGIProcessGroup CDRDB WSGIScriptReloading On WSGIScriptAlias /foo /var/www/wsgi/foo.wsgi WSGIScriptAlias /hello1 /var/www/wsgi/hello1.wsgi </VirtualHost> |
。
运行时:
1 2 | curl http://127.0.0.1:9000/foo http://127.0.0.1:9000/foo/: no route |
注意EDOCX1中的尾随斜线(0)。
我在这里和Reddit上浏览了二十多个关于路线的帖子,然后添加了404处理程序,现在我已经无计可施了。没有"foo"目录,所以
编辑:
编辑2:显然,Apache或mod wsgi在路径上玩把戏,
1 2 3 4 5 | curl http://127.0.0.1:9000/foo/foo # Apache I'm foo. route=http://127.0.0.1:9000/foo/foo curl http://127.0.0.1:5000/foo # flask run I'm foo. route=http://127.0.0.1:5000/foo |
。
——
1 2 3 4 5 6 7 | >>> flask.__version__ '0.12.2' >>> sys.version_info sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0) $ apachectl -v Server version: Apache/2.4.18 (Ubuntu) Server built: 2017-09-18T15:09:02 |
。
您的wsgiscriptAalias配置错误。与
要获得您想要的行为,别名应该是根目录的别名,即
您不需要在第二个修饰符中指定斜线。烧瓶将自动重定向到与URL关联的控制器。
我也建议你把第二个装饰器移走…
在
1 2 | @app.route('/foo') @app.route('/foo/') |
第二个修饰符也会导致最后一个斜杠的重定向。