とある開発においてSMSの送信をすることがあり、SMSの事業者からコールバックを受ける必要がでてきました。 開発環境でBASIC認証をかけているので、コールバックを受けるURLだけを開放したい。 だけどCakePHPでは.htaccessによってURLをrewriteしているので一筋縄ではいきません。
色々調べた結果、以下の記述で動くことがわかりました:
<Location "/"> AuthType Basic AuthName "hogehoge" AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user SetEnvIf Request_URI ^/Callback noauth=hoge Allow from env=REDIRECT_noauth Allow from env=noauth Order Deny,Allow Satisfy any Deny from all </Location>
まだ理解が浅いのですがこんな原理です:
- /Callbackをアクセスすると、noauth=hogeが設定される
- その後、RewriteRuleによりURLが書き換わり、noauthの値はREDIRECT_noauthにセットされる
- Satisfy Anyがあるので、パスワードを入れなくても/Callbackであれば通過する
と言った具合です。