Redirigir rutas no válidas usando .htaccess (por ejemplo, "home.php/xyz")

Redirigir rutas no válidas usando .htaccess (por ejemplo, "home.php/xyz")

Estoy ejecutando Apache 2.4.2 en mi servidor local. El archivo de mi sitio web .htaccesses el siguiente:

DirectoryIndex home.php
Options -Indexes
ErrorDocument 404 /404.php

Esto funciona muy bien para mostrar una página HTTP 404 cuando intenta acceder a un archivo inexistente en el navegador, pero no muestra la página de error al acceder a archivos existentes utilizando la siguiente sintaxis:

http://localhost/<FileName>.php/<AdditionalCharacters>

Por ejemplo, si voy a home.php/xyz, la home.phppágina se carga, pero todos los enlaces relativos en el HTML están rotos. ¡No tengo un home.phpdirectorio en mi servidor! ¿Qué está sucediendo?

¿Existe alguna directiva o regla que pueda agregar a mi .htaccessarchivo para detener este comportamiento y generar un error HTTP 404?

Respuesta1

Esta es una característica llamada "path_info" y se usa comúnmente para ejecutar sitios web completos desde un único script CGI (cuando mejores alternativas, como mod_rewrite, no están disponibles).

Si la URL hace que un script CGI sea tratado como un directorio, Apache ejecutará ese script normalmente pero le dará los componentes de ruta adicionales en la PATH_INFOvariable de entorno. Muchos motores wiki utilizan esta característica; por ejemplo, puedes accederhttps://wiki.archlinux.org/index.php/Beginners%27_Guide/PreparationPor aquí.

Esto se puede controlar mediante elAceptarPathInfoconfiguración.

información relacionada