Pregunta

Me di cuenta, que a veces (especialmente cuando mod_rewrite no está disponible) se utiliza este esquema de ruta:

http://host/path/index.php/clean_url_here
--------------------------^

Este parece para el trabajo, por lo menos en Apache, donde se llama index.php, y se puede consultar a través de la parte /clean_url_here $_SERVER['PATH_INFO']. PHP incluso tipo de hace publicidad esta función. También, por ejemplo, la CodeIgniter marco utiliza esta técnica como por defecto para sus URLs.

La pregunta: ¿Qué tan confiable es la técnica? ¿Hay situaciones en las que Apache no llama index.php sino que trata de resolver la ruta? ¿Qué pasa con lighttpd, Nginx, IIS, AOLServer?

Una pregunta ServerFault? creo que tiene más que ver con el uso de esta función dentro de código PHP. Por consiguiente, pido aquí.

Adición: Como sugiere VolkerK, una extensión razonable a esta pregunta es: ¿Cómo puede una influencia programador de la existencia de $_SERVER['PATH_INFO'] en varios tipos de servidores

¿Fue útil?

Solución

creo que esta una pregunta que es igualmente adecuado para stackoverflow y serverfault. P.ej. Yo como un desarrollador sólo se puede decir que pathinfo es tan confiable como cualquier entrada de usuario (lo que significa que puede contener prácticamente cualquier cosa) y la secuencia de comandos puede o no puede recibirlo en función de la versión de servidor web y de configuración:

Apache: AcceptPathInfo
IIS: por ejemplo, AllowPathInfoForScriptMappings y otros
y así una y otra vez ...

Pero los administradores del servidor, posiblemente, le puede decir qué configuración se puede esperar "en el mundo real" y por qué se prefieren aquellos ajustes.
Entonces la pregunta es: ¿Cuánta influencia tiene usted (o la base de usuarios esperado) tiene en la configuración del servidor

.

Otros consejos

AcceptPathInfo necesidades para estar habilitado con el fin de tener este trabajo.

A partir de mi experiencia diría PATH_INFO es generalmente disponibles en entornos de alojamiento web normales y configuraciones de servidor - incluso en IIS - pero en raras ocasiones, no lo es. Cuando la construcción de una aplicación que se supone que debe ser desplegables en tantas plataformas como sea posible, no lo haría PATH_INFO la confianza en un nivel no modificable.

Siempre que puedo, trato de construir un build_url() función de contenedor que, en función de un parámetro de configuración, usos o bien

  • www.example.com/index.php?clean_url=clean_url_here la URL prima
  • el mecanismo PATH_INFO www.example.com/index.php/clean_url
  • mod_rewrite www.example.com/clean_url

y el uso que en todas las direcciones URL que emite la aplicación.

Puede haber guiones ingenuos (auto-enlace, por ejemplo) que no reconoce el formato del URL. Con lo que disminuye la posibilidad de que se crearán enlaces a su contenido.
Dado que los patrones de expresión regular de cosecha son comunes para estas tareas, la posibilidad de fracaso es muy real.

Técnicamente, las direcciones URL están bien. SEO-sabio, que son 'menos perfecta'.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top