簡體   English   中英

如何將包含以“www”開頭的URL的所有請求重定向到裸域?

[英]How do I redirect all requests with URLs beginning with “www” to a naked domain?

我成功地為我的應用添加了Heroku自定義域名。 我想知道如何捕獲以www開頭的請求並將它們重定向到裸域。 例如,我將以下自定義域映射到我的Heroku應用程序:

www.myapp.com
myapp.com

http://myapp.comhttp://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幫助 )。

或者,您可以注冊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。

我不習慣Flask,但你可以設置一個匹配/^www./的路由,然后將其重定向到沒有“www”的url。

您可以查看http://werkzeug.pocoo.org/docs/routing/#custom-convertershttp://werkzeug.pocoo.org/docs/routing/#host-matching

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM