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