standard permalink htaccess example change php .htaccess php-5.4

php - htaccess - wordpress permalink settings



PHP incorporado en el servidor y.htaccess mod reescribe (2)

Aquí está el enrutador que utilizo para el servidor web incorporado php que sirve los activos del sistema de archivos si existen y de otra manera realiza una reescritura a un archivo index.php.

Ejecutar utilizando:

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''; }

¿El servidor incorporado de PHP no hace uso de .htaccess? Tiene sentido, supongo, ya que no depende de Apache (?). De todos modos, ¿es posible decirle al servidor que haga uso de estos archivos, puede manejar las reescrituras de URL? Tengo algunos proyectos en marcos que dependen de estos archivos.

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


No es posible manejar .htaccess utilizando el servidor web incorporado de PHP (no se basa en apache, se implementa totalmente en el núcleo de PHP). Sin embargo, puede usar el script de enrutador (descrito aquí: http://php.net/manual/en/features.commandline.webserver.php ).

Por ejemplo, php -S localhost -S localhost:8080 router.php