저는 Apache에서 종속 포털을 구축하려고 노력해 왔으며 Apple CNA에 대해 배울 계획입니다.
StackOverflow에서 다음을 포함하여 여러 관련 게시물을 찾았습니다.종속 포털 팝업...그리고WiFi 팝업 로그인 페이지를 만드는 방법.
관련 Apache 구성을 다음과 같이 정의했습니다.
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
RewriteRule ^(.*)$ http://192.168.2.1/captive/portal.html [L,R=302]
# android
RedirectMatch 302 /generate_204 http://192.168.2.1/captive/portal.html
# windows
RedirectMatch 302 /ncsi.txt http://192.168.2.1/captive/portal.html
CNA 브라우저가 리디렉션 루프에 진입하여 제대로 작동하지 않습니다.
또한 모든 관련 페이지를 /captive 디렉토리에 넣고 규칙을 정의해 보았습니다.
RewriteRule !^captive($|/) http://192.168.2.1/captive/portal.html [L,R=302]
그러나 비슷한 루핑 문제가 있습니다. 무엇을 해야 할까요?
답변1
조사와 일부 테스트를 거친 후 Apple CNA가 자체 웹 브라우저라는 것이 분명해졌습니다. 예외가 올바르게 작성되지 않으면 모든 후속 요청에 다시 동일한 사용자 에이전트가 적용됩니다. 따라서 처음부터 프로그램/포털 리디렉션을 시작하여 루프를 리디렉션합니다.
따라서 Apple의 규칙에 따라 더 이상 리디렉션하지 않습니다.만약에대상 호스트는 종속 포털 서버입니다.
# apple
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^192.168.2.1$
RewriteRule ^(.*)$ http://192.168.2.1/captive/portal.html [L,R=302]
# android
RedirectMatch 302 /generate_204 http://192.168.2.1/captive/portal.html
# windows
RedirectMatch 302 /ncsi.txt http://192.168.2.1/captive/portal.html
또한 이전 조건이 전혀 발생하지 않거나 규칙이 없는 OS를 처리하는 경우 포털로 리디렉션되는 일반 포괄 규칙도 여기에 추가했습니다.아직 거기 없다면(예: 필수 디렉터리에 대한 액세스 권한 없음)
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/captive/ [NC]
RewriteRule ^(.*)$ http://192.168.2.1/captive/portal.html [L]
분명히 이 구성을 사용하면 모든 종속 포털 관련 파일이 /captive 디렉터리에 있어야 한다는 점을 강조하고 싶습니다.
당신은 또한 볼 수 있습니다캡티브 포털 감지, 팝업창 구현?