我有一台运行 django 并提供无线接入点的设备。我基本上想创建一个类型的强制门户,输入的任何 url 都会转到我的 django 网页。
到目前为止,为了实现这一点,我已经创建了一个像这样的 iptables 规则(现在):
iptables -t nat -A PREROUTING -d 0/0 -p tcp –dport 80 -j DNAT –to 192.168.50.1:8000
这在某种程度上起作用,除了如果我去例如“google.com”,我会在浏览器 url 中显示 google.com,但会显示我的 django 网页。
我希望 mydjangowebpage.com 改为显示在 url 中。似乎有许多强制门户解决方案需要 dns 服务器、多个 iptables 规则、radius 服务器等。
对我来说,一个简单的解决方案似乎是执行我上面指定的一个规则,然后在 django 中执行一些 httpredirect 命令。我想知道我的 urls.py 调度程序是否能够检查实际的站点 url(即“google.com”部分),以及是否不是“mydjangowebpage.com”来对“mydjangowebpage”进行 httpredirect。那有意义吗?
我猜 urlpatterns 会寻找匹配项,似乎要实现这一点,模式需要寻找不匹配项并查看整个 url,而不仅仅是站点名称后面的内容。
例如,类似于以下内容:
urlpatterns = patterns('',
url(lambda x: not models.get_current_site(request) == 'mydjangowebpage.com', lambda x: HttpResponseRedirect("http://mydjangowebpage.com")),
....