我正在尝试使用Apache2的Linux机器实现一个捕获门户。在这种情况下,大多数操作系统使用Captive Network Assistant(CNA)技术来"检测"他们是否正在访问Captive门户(Android、Windows、OSX、iOS…)
好吧,对于Android和Windows设备来说,一切都"很好"(尽管它们可能会提醒你一些消息,比如"你可能需要额外的网络信息…"之类的)。问题出在苹果设备上。CNA的iOS实现似乎有点困难,因为它打开了一个登录弹出窗口,等待凭据介绍。。。通过这种方式,我无法在Safari的主窗口中浏览我的内容,但在"临时"Safari窗口中。。。
我已经广泛研究了一些"绕过"这个iOS CNA实现的方法,只要在方便的时候提供一个"success.html"文件,我发现有人已经成功地使用了LightTPD web服务器,比如:
dir-listing.hide-dotfiles = "enable"
# Fix for iOS7
# It ask especially different domains without a specific URL.
# It want to get a "success" message, to allow full system/internet access
$HTTP["useragent"] =~ "CaptiveNetworkSupport" {
server.document-root = "/opt/piratebox/www/library/test/"
index-file.names = ( "success.html" )
dir-listing.activate = "disable"
server.error-handler-404 = "/success.html"
}
我想知道是否有人可以将前面的LightTPD指令"翻译"成Apache2中的等效指令,可能需要一些RewriteCond+RewriteRule指令。。。
否则,如果有人使用Apache2绕过iOS CNA建立了一个专属门户,我会非常有兴趣阅读该过程的简短描述,并自行复制。
提前谢谢。
我的示例:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$
RewriteCond %{REQUEST_URI} !^/tools/apple(.*) [NC]
RewriteRule ^(.*)$ http://yourdomain/pub/apple/success.html [L,R=302]