PHP встроен в сервер и переписывает мод .htaccess

Встроенный сервер PHP не использует .htaccess? Имеет смысл, я полагаю, поскольку он не полагается на Apache (?). Во всяком случае, можно ли сказать серверу использовать эти файлы, может ли он обрабатывать перезаписи URL? У меня есть некоторые приложения в рамках, которые полагаются на эти файлы.

APPLICATION_ENV=development php -S localhost:8000 -t public/

Solutions Collecting From Web of "PHP встроен в сервер и переписывает мод .htaccess"

Невозможно обрабатывать .htaccess с помощью встроенного web-сервера PHP (он не полагается на apache, он реализован в ядре PHP). Однако вы можете использовать скрипт маршрутизатора (описанный здесь: http://php.net/manual/en/features.commandline.webserver.php ).

Например, php -S localhost -S localhost:8080 router.php

Вот маршрутизатор, который я использую для встроенного php-сервера, который обслуживает активы из файловой системы, если они существуют, и в противном случае выполняет переписывание в файл index.php.

Выполнить:

 php -S localhost:8080 router.php 

router.php:

 <?php chdir(__DIR__); $filePath = realpath(ltrim($_SERVER["REQUEST_URI"], '/')); if ($filePath && is_dir($filePath)){ // attempt to find an index file foreach (['index.php', 'index.html'] as $indexFile){ if ($filePath = realpath($filePath . DIRECTORY_SEPARATOR . $indexFile)){ break; } } } if ($filePath && is_file($filePath)) { // 1. check that file is not outside of this directory for security // 2. check for circular reference to router.php // 3. don't serve dotfiles if (strpos($filePath, __DIR__ . DIRECTORY_SEPARATOR) === 0 && $filePath != __DIR__ . DIRECTORY_SEPARATOR . 'router.php' && substr(basename($filePath), 0, 1) != '.' ) { if (strtolower(substr($filePath, -4)) == '.php') { // php file; serve through interpreter include $filePath; } else { // asset file; serve from filesystem return false; } } else { // disallowed file header("HTTP/1.1 404 Not Found"); echo "404 Not Found"; } } else { // rewrite to our index file include __DIR__ . DIRECTORY_SEPARATOR . 'index.php'; }