2020-11-14

PHPドットを含むURLが動かない問題

正確にはPHPビルトインサーバーindex.phpなどのルーターを使っていると、URLパスに.(ピリオドドット)を含むリクエスト

cssjsなどのリソースファイルへのアクセスだと判定されて、ルーター(index.php)がパイパスされPHPが実行されない

という現象に遭遇した。

これはビルトインサーバー起動時に明示的にルーター(index.php)を指定することで回避できる。

明示的にルーター指定すると、リクエストが必ずルーター(index.php)を通るようになる。

上記対応だけだと、今度はcssjsなどのリソースファイルがほしいだけなのに、必ずindex.php呼ばれてしまい通常のファイルが取得できなくなってしまう。

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

の例3の通り、画像css,jsなどのリソースへのアクセス場合は、return false; でルータースクリプト強制停止すると、PHP処理がキャンセルされてビルトインサーバーファイルなどのリソースを返すようになる。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん