当前位置 : 主页 > 网页制作 > HTTP/TCP >

如何将所有以“www”开头的URL重定向到裸域?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我成功地为我的应用添加了Heroku自定义域名.我想知道如何捕获以www开头的请求并将它们重定向到裸域.例如,我将以下自定义域映射到我的Heroku应用程序: www.myapp.commyapp.com 对http://myapp
我成功地为我的应用添加了Heroku自定义域名.我想知道如何捕获以www开头的请求并将它们重定向到裸域.例如,我将以下自定义域映射到我的Heroku应用程序:

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.

网友评论