SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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の設定より後に反映させることができそう。

関連するメモ

コメント