我试图在http://<my-server.com>/UserControl
以下是相关文件:
的Apache
<VirtualHost *:80>
ServerName <redacted>
ServerAdmin webmaster@localhost
# not needed actually because we're proxying everything to Tomcat, but just leave it to make Apache happy
DocumentRoot /var/www/html
DirectoryIndex index.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Location /alpha>
AuthType Basic
AuthName "Restricted Access - Authenticate"
AuthUserFile /etc/httpd/htpasswd.users
Require valid-user
</Location>
<Location /UserControl>
AuthType Basic
AuthName "Restricted Access - Authenticate"
AuthUserFile /etc/httpd/htpasswd.users
Require valid-user
</Location>
Redirect /alpha /alpha/
ProxyPass /alpha/ http://127.0.0.1:3838/alpha/
ProxyPassReverse /alpha/ http://127.0.0.1:3838/alpha/
WSGIDaemonProcess UserControl user=ubuntu group=ubuntu threads=5
WSGIScriptAlias /UserControl/ /home/ubuntu/FlaskApps/UserControl/UserControl.wsgi
<Directory /home/ubuntu/FlaskApps/UserControl>
WSGIProcessGroup UserControl
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Order deny,allow
#Allow from all
Require all Granted
</Directory>
</VirtualHost>
请注意,我还有一些其他目录可以运行。
我的相关.py和.wsgi文件是:
UserControl.py
from flask import Flask
app = Flask(__name__)
@app.route("/UserControl")
def main():
return "Welcome!"
if __name__== "__main__":
app.run()
UserControl.wsgi
import sys, os
sys.path.insert (0,'/home/ubuntu/FlaskApps/UserControl')
#os.chdir("/home/ubuntu/FlaskApps")
from UserControl import app as application
文件位于
/home/ubuntu/FlaskApps/UserControl
但是当我访问时:
http://<my-server.com/>UserControl
我得到了404(通过FLASK! - 所以apache似乎正确路由)
我到底错过了什么?
答案 0 :(得分:0)
您在不使用尾部斜杠的情况下定义了路径。您的反向代理可能会重定向到的路径斜杠。以这种方式定义路由时,使用尾部斜杠访问URL将产生404“未找到”错误。这包含在quickstart guide。
中你可以禁用&#39;严格斜线&#39;或使用尾部斜杠定义路线。
来自文档:
采取以下两条规则:
@app.route('/projects/')
def projects():
return 'The project page'
@app.route('/about')
def about():
return 'The about page'
虽然它们看起来很相似,但它们在URL定义中对尾部斜杠的使用有所不同。在第一种情况下,项目端点的规范URL具有尾部斜杠。从这个意义上说,它类似于文件系统上的文件夹。在没有尾部斜杠的情况下访问它将导致Flask重定向到带有斜杠的规范URL。
但是,在第二种情况下,URL的定义没有斜杠,而是类似UNIX类系统上文件的路径名。使用尾部斜杠访问URL将产生404“未找到”错误。
此行为允许相对URL继续工作,即使省略了尾部斜杠,这与Apache和其他服务器的工作方式一致。此外,URL将保持唯一,这有助于搜索引擎避免两次索引相同的页面。