特定のセットアップでAndroidキャプティブポータルの検出を処理するには、/generate_204
のGETリクエストを受け取るたびにHTTPステータスコード204を返す必要があります。現在、uhttpdを使用していますウェブサーバーなので、これがこのサーバーで可能かどうか疑問に思っています。
私の現在の理解:次のようなものを返すCGI(またはPHPまたはLua)スクリプト)を自分で作成する必要がありますStatus: 204 No Result
私が持っている質問は、/generate_204
へのリクエストをCGIまたはPHPまたはLuaに転送するようにuhttpdを構成する方法です。これには、一致できるプレフィックスもファイル拡張子もありません。この目的のために。
残念ながら、@ HBruijnは、単に/generate_204
をファイルではなくディレクトリにして、それをcgi_prefix
として使用し、その中にindex.cgi
-ファイルをindex_page
として使用するという非常に巧妙なアイデアです。部分的にしか機能しません。自分でブラウザから/generate_204
を開くと、それは私が望んでいたことを正確に実行しますが、最初に/generate_204/
にリダイレクトを返した後でのみ、Androidキャプティブポータル検出を明示的にですから、残念ながらこの解決策では私の問題は解決しません。
これが私が思いついたハックジョブで、うまくいくようです。
単に/generate_204
ファイルをまったく持たず、代わりにcgi-bin
に次のようなすべての誤った要求を処理するCGIスクリプトを作成します。
#!/bin/sh
if [ "$REQUEST_URI" == "/generate_204" ]; then
echo "Status: 204 No Content"
echo ""
exit
fi
echo "Status: 404 Not Found"
echo "Content-Type: text/html"
echo ""
cat /path/to/my/error404.html
次に、以下を/etc/config/uhttpd
に追加するだけです。
option error_page /cgi-bin/error.cgi
option cgi_prefix /cgi-bin
list interpreter ".cgi=/bin/ash"
(必要に応じてファイル名とフォルダー名を調整します)
これは間違いなく最もクリーンな解決策ではありません。リダイレクトを防ぎ、@ HBruijnのアイデアを機能させる方法がある場合は、質問を開いたままにしておきます。