前提
さくらサーバのマネージドプラン(他のプランは調べてない)は、以下のようにすることで指定ディレクトリ以下のPHPのバージョンを任意に指定することができる。
/webルート/.htaccess
Action myphp-script /php.cgi
AddHandler myphp-script .php
/webルート/php.cgi
#!/bin/sh
exec /usr/local/php/7.3/bin/php-cgi
問題
/webルート/.htaccess
で除外認証を設定しつつ、/webルート/api
ディレクトリのBASIC認証除外するために以下のファイルを設置したが、BASIC認証が解除されない。
/webルート/api/.htaccess
Satisfy any
order allow,deny
allow from all
解決方法
/webルート/.htaccess
のBASIC認証部分に以下を追記する。
/webルート/.htaccess
# さくらサーバで指定ディレクトリだけPHPバージョン変更している際にBASIC認証除外が効かなくなる問題の対応
<FilesMatch "(php\.cgi)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
まとめ
昔は問題なかった気がするけど、いつのまにかこれしないといけなくなってた。