犬ターネット

PHP のルータースクリプトで mod_rewrite の設定を代用

2016-08-02 php

PHPのフレームワークでよくあるやつで、.htaccess にこういうのを書くんだけど、

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

PHPビルトインウェブサーバでこれを実現するには以下ルータースクリプト .router.php を index.php と同じ階層に作成し、

<?php
// /css/style.css?ver1.0 で記述されている場合ゴミを含めたパスを探しにいって not found になるのでゴミ削除しておく
if(file_exists(__DIR__ . preg_replace("/\.(json|html|txt|css|js|jpe?g|png|gif|svg|woff|eot).*\z/i", ".$1", $_SERVER["REQUEST_URI"]))){
  return false;
} else {
  require __DIR__ . "/index.php";
}

以下を実行すればOK。

php -S localhost:8000 .router.php

実験中

プール、カレー、SaitaManica at hisomine, Omiya