我成功地为我的应用添加了Heroku自定义域名.我想知道如何捕获以www开头的请求并将它们重定向到裸域.例如,我将以下自定义域映射到我的Heroku应用程序: www.myapp.commyapp.com 对http://myapp
www.myapp.com myapp.com
对http://myapp.com和http://www.myapp.com的请求都是成功的,但www仍然存在.
目的
我希望将http://www.myapp.com的所有请求重定向到http://myapp.com.这也适用于其他路径,例如http://www.myapp.com/some/foo/bar/path重定向到http://myapp.com/some/foo/bar/path.我想要这样的东西:http://www.stef.io并看看如何www.离开了地址栏.
到目前为止,我在Google上找到的说明是关于编辑我的.htaccess文件,但是我正在使用Flask框架上的Python应用程序在Heroku上运行.
建议的解决方案是DNS级别重定向(请参阅 heroku help).或者,您可以注册before_request函数:
from urlparse import urlparse, urlunparse @app.before_request def redirect_www(): """Redirect www requests to non-www.""" urlparts = urlparse(request.url) if urlparts.netloc == 'www.stef.io': urlparts_list = list(urlparts) urlparts_list[1] = 'stef.io' return redirect(urlunparse(urlparts_list), code=301)
这将使用“HTTP 301 Moved Permanently”响应将所有www请求重定向到非www.