我用谷歌搜索,读了很多天。而且我仍然找不到正确的答案,所以我要问。
我有一个自定义域,并添加了它以通过App Engine部署我的应用。当我这样做时,App Engine还会创建同一应用程序的其他网址,例如:
我的域名是example.com,在部署时,我有四个与我的网站相同的网站:
重要提示:我的ProjectID与我购买的域的名称相同
所以,我怎么能杀死所有这些不必要的URL,而只留在www.example.com和example.com上?
((我当时正在考虑使用Express.js来处理此问题,但我首先想知道是否有更好的最终解决方案。我也尝试过使用它配置dispatch.yaml文件,但似乎不起作用,并带有一个发送301的.htaccess文件,但App Engine无法识别它,因为它不是Apache服务器。]
已复制,请检查Get rid of "appspot" in the domain of my app in App Engine
无法从App Engine上的任何应用程序中删除appspot.com域。
如果您真的想“摆脱它们”,或者根本无法访问它们,则可以从应用程序上的传入请求中读取Host标头,然后检查该请求是否是发给appspot.com或您的自定义域(这是在您的应用程序级别完成的,大多数框架应允许您这样做)。
然后,您可以重定向请求,或仅返回错误响应,或完全不执行任何操作。
例如,使用flask,您可以执行以下操作:
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/')
def read_host():
host = request.host
if "appspot.com" in host:
return redirect('https://[CUSTOM-DOMAIN].com', code=301)
# else, keep running the application normally, it means that the request
# was made to the Custom Domain
if __name__=='__main__':
app.run('127.0.0.1', port=8080, debug=True)
请问您为什么对此感兴趣?据我所知,当appspot域与自定义域共存时,应该不会有任何冲突或问题,并且也不会因为拥有这些appspot域名而向您收费。