Привожу пример своего routing.php для разработки приложений с поддержкой mod_rewrite на localhost’e:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php // routing.php $path = $_SERVER['REQUEST_URI']; $request_url = parse_url($path); if ($request_url['path']) { $path = $request_url['path']; } if (file_exists($_SERVER["DOCUMENT_ROOT"] . $path)) { return false; } $Filepath = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $pathinfo = pathinfo($Filepath); // ^ это нужно чтобы сервер не искал файл вида /news/?page=2 $File = __DIR__ . '/' . trim($Filepath, '/'); if (file_exists($File)) return false; // файл (или директория) существует, отдаем как есть // это php скрипт, отдаем как есть if (false !== $phppos = strpos($Filepath, '.php')) { $phpfile = substr($Filepath, 1, $phppos) . 'php'; if (!file_exists($phpfile)) { throw new Exception($phpfile . ' not exists, request: ' . $_SERVER["REQUEST_URI"]); return false; } include_once $phpfile; exit; } // jpg и все картинки не пропускаем через index.php if (in_array($pathinfo['extension'], explode('|', 'js|css|jpg|jpeg|gif|png'))) { return false; } $_GET['p'] = $Filepath; unset($Filepath, $File); include_once 'index.php'; |
кладем этот файл куда-нибудь в общую директорию, например ~/www/routing.php
Далее запускаем dev сервер командой
1 |
php -S localhost~/www/routing.php |
Теперь при обращении к несуществующему файлу, например http://localhost/page1 у вас будет вызван index.php
Добавить комментарий