【apache】Ifディレクティブで適用順序が変わる?
問題
通常は拡張子phpをphp7.4で処理するが、特定の条件の時だけ除外したくて、
サーバー設定ファイル(httpd.conf)で以下のようにして、
<FilesMatch \.php$> <If "条件"> SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost" </If> </FilesMatch>
あるディレクトリだけ .htaccess で SetHandler を上書きすると、
<FilesMatch \.php$> SetHandler php-cgi </FilesMatch>
.htaccessが効かないのですが。
答え
適用順序というか、評価順序でしょうか。
.htaccess の設定でいったん上書きはされるようだが、<If ~></If> の評価がそのあとにされるのか(?)、最終的に上流のサーバー設定ファイルの設定のほうが効いている状況が発生した。
<If ~></If> を削除すると .htaccess の設定で上書きされた。
逆に <If ~></If> で囲むことで、意図的に.htaccessの設定より後に反映させることができそう。
コメント