<IfModule mod_rewrite.c>
    RewriteEngine On
    # src / cron 配下は PHP 実行時に require されるロジックのみで、直接 HTTP アクセスさせない。
    # ただし cron/run_cron.php は Web 経由トリガー用途で開放する。
    RewriteRule ^src/      - [F,L]
    RewriteRule ^data/     - [F,L]
    RewriteCond %{REQUEST_URI} !^/?.*cron/run_cron\.php$
    RewriteRule ^cron/     - [F,L]
</IfModule>

Options -Indexes
DirectoryIndex index.php

# ドットファイル / バックアップファイル / 鍵ファイル等を一律で拒否する（多層防御）。
<FilesMatch "(^\.|\.(env|key|pem|crt|sqlite|db|log|bak|swp|orig|ini|conf|sql|tmp)$|~$)">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>

# Apache 2.4 系で X-Powered-By / Server バナーをできるだけ抑制する（情報露出抑制）。
<IfModule mod_headers.c>
    Header unset X-Powered-By
    Header unset Server
    # 追加のセキュリティヘッダを Apache 側でも保険として送出。
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "DENY"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
