带有子域的 Flask 中断了指向静态资源的链接
Flask with subdomain breaks links to static resources
我添加了子域支持:
- C:\Windows\System32\drivers\etc\hosts:
127.0.0.1 subdomain.test.com
- 烧瓶配置:
SERVER_NAME = 'test.com:5005'
- 蓝图:
@app_blueprint.route('/', methods=['GET'], subdomain='<subdomain_name>')
def index(subdomain_name):
return redirect(url_for('app.index'))
它成功找到了路由,但是当它加载模板 app.html 到浏览器时它无法解析静态资源:
而不是
<script src="http://subdomain.test.com:5005/static/dist/app.bundle.js"></script>
解析为
<script src="http://test.com:5005/static/dist/app.bundle.js"></script>
找不到。
我错过了什么?
更新。我根据肖恩的回答更新了主机文件。但是现在 Flask 找不到我要重定向到的端点 "app.index"。
我指定为:
@app_blueprint.route('/app', methods=['GET'], subdomain='<subdomain_name>')
@app_blueprint.route('/app/<path:path>', methods=['GET'], subdomain='<subdomain_name>')
def index(path = None, subdomain_name=None):
return render_template('app.html', subdomain_name=subdomain_name)
如果我直接在浏览器中使用 /app 可以命中此端点,但重定向不起作用,也找不到其他东西。
您还需要将 test.com
添加到您的 /etc/hosts
别名中:
127.0.0.1 subdomain.test.com test.com
你告诉 Flask 你挂载在 test.com
上,所以它在那里挂载了 /static
路由......但是你的网络层不知道 test.com
在哪里,因为你还没有告诉它它住在哪里。
我添加了子域支持:
- C:\Windows\System32\drivers\etc\hosts:
127.0.0.1 subdomain.test.com
- 烧瓶配置:
SERVER_NAME = 'test.com:5005'
- 蓝图:
@app_blueprint.route('/', methods=['GET'], subdomain='<subdomain_name>')
def index(subdomain_name):
return redirect(url_for('app.index'))
它成功找到了路由,但是当它加载模板 app.html 到浏览器时它无法解析静态资源:
而不是
<script src="http://subdomain.test.com:5005/static/dist/app.bundle.js"></script>
解析为
<script src="http://test.com:5005/static/dist/app.bundle.js"></script>
找不到。
我错过了什么?
更新。我根据肖恩的回答更新了主机文件。但是现在 Flask 找不到我要重定向到的端点 "app.index"。
我指定为:
@app_blueprint.route('/app', methods=['GET'], subdomain='<subdomain_name>')
@app_blueprint.route('/app/<path:path>', methods=['GET'], subdomain='<subdomain_name>')
def index(path = None, subdomain_name=None):
return render_template('app.html', subdomain_name=subdomain_name)
如果我直接在浏览器中使用 /app 可以命中此端点,但重定向不起作用,也找不到其他东西。
您还需要将 test.com
添加到您的 /etc/hosts
别名中:
127.0.0.1 subdomain.test.com test.com
你告诉 Flask 你挂载在 test.com
上,所以它在那里挂载了 /static
路由......但是你的网络层不知道 test.com
在哪里,因为你还没有告诉它它住在哪里。