ApacheでNginxのtry_filesのようなことをしたい
Apacheを使っていて、Nginxのtry_filesのようにして、指定された順序でファイルの存在を確認し、最初に見つかったファイルを処理するようにしたい場合があります。
Apacheにはtry_filesがないので、Apacheではどのようにやるのか調べました。
Nginxでのtry_filesのサンプル
例えばNginxだとよくやるのはこんな感じですね。
$uriが存在する場合はこちらを処理して、$uriがない場合は@somethingを処理するパターンです。
location / { try_files $uri @something; }
Apacheでのtry_filesのサンプル
リクエストされたファイルがある場合はそれを返却して、ない場合はhttps://domain/index.phpへリダイレクトさせるような感じの設定です。
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ https://domain/index.php [P,QSA,L]
PHPのフレームワークなんかでは、PHPでルーティングするためによくこんな感じの設定が.htaccessとかにありますよね。
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
メンテナンス画面を出したい場合
Apacheでメンテナンス画面を出したい場合も同じような感じでできます。
詳細はこちらをご覧下さい。
コメント