[英]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.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幫助 )。
或者,您可以注冊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-converters或http://werkzeug.pocoo.org/docs/routing/#host-matching
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.