PHP の組込みサーバーで良い感じの rewrite をする

Published: 2023/10/13


PHP は起動時に -S アドレス:ポート オプションを指定することで、組込みの web サーバー機能を起動させながら、各種 php を実行させることができる。 これは、 Apache 経由の CGI で php ファイルを実行させるのに比べて、必要なミドルウェアが PHP のみになるため、ローカルの開発環境を構築するため等に利用できる。

https://www.php.net/manual/en/features.commandline.webserver.php

$ php -S localhost:8000
# => カレントディレクトリを root としたWebサーバを起動

これによって起動される Web サーバは、基本的な機能しか持っていないため、例えば Wordpress でカスタムパーマリンクなどをやる場合には、アセットとして対象のファイルが見つからなければ、 index.php を起動する、みたいなことをやる必要がある。

そのようなニーズに答えるため、この php の -S オプションは、引数の最後に php ファイルを受け取って、それによってルーティングを行わせることができる。

$ php -S localhost:8000 router.php

router.php のファイルは、 falsereturn することで、引き続き、ただのWebサーバとして PHP を振る舞わせることができる。 動的な値を返したい場合には、その中身の文字列などを return する。

あるあるな rewrite 動作を行わせる router.php の書き方の例として、例えば以下の記事などがある。

これは例えば、 Wordpress を nginx で動かす設定例(nginx 公式) における nginx の動作にも一致した挙動となっている、はず。


Tags: php