基于Web2Py routes.py中的函数定义子域名

2 投票
1 回答
906 浏览
提问于 2025-04-17 03:30

我有这样一个页面:

http://mysite.org/myapp/pages/blog?name=user9

我需要把它变成这样:

user9.mysite.org

我在routes.py里应该写些什么呢?

1 个回答

4

好的,我想我有点误解了这个问题。你需要让 user9.mysite.org 这个地址能通过 web2py 应用来访问。如果你的网站托管在 mysite.org 上,有一种方法是把所有请求(不管是哪个子域名)都转发到 web2py 应用上(你需要在你的 DNS 提供商那里设置一个 A 记录,比如 *.mysite.org:http://kb.mediatemple.net/questions/791/DNS+Explained#/A_Record

然后,你可以使用路由

像这样:

routes_in = (
  ('http://(?P<user>.*).mysite.org/(?P<any>.*)',
  '/app/pages/blog/\g<any>?name=\g<user>'),
) 

这里的 <any> 会保存你可能需要的任何参数。这应该能把来自 user9.mysite.org 的请求映射到 mysite.org/app/pages/blog/<args>?name=user9

你可能需要稍微调整一下才能让它正常工作。关键是要确保对 mysite.org 的任何子域名的请求都能直接转到应用上。也就是说,如果你访问 www.mysite.org、mysite.org 或者 somerandomfakesubdomain.mysite.org,你总是能到达和 mysite.org 一样的地方。你可能还想在你的博客功能中加一些逻辑,以确保子域名字符串(例如 user9)代表一个有效的用户。

撰写回答