2010-04-14 12 views
6

me di cuenta, que a veces (especialmente cuando mod_rewrite no está disponible) se utiliza este esquema de ruta:¿Cuán confiables son los URI como /index.php/seo_path

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

Este parece funcionar, al menos en Apache, donde se llama index.php, y se puede consultar la parte /clean_url_here a través de $_SERVER['PATH_INFO']. PHP incluso kind of advertises esta característica. Además, por ejemplo, el marco CodeIgniter utiliza esta técnica como predeterminada para sus URL.

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

¿Una pregunta de ServerFault? Creo que tiene más que ver con el uso de esta función dentro del código PHP. Por lo tanto, pregunto 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?

Respuesta

4

Creo que esta es una pregunta que es igualmente adecuada para stackoverflow y serverfault. P.ej. Como desarrollador solo puedo decirle que pathinfo es tan confiable como cualquier entrada de usuario (lo que significa que puede contener prácticamente cualquier cosa) y su script puede o no recibirlo dependiendo de la configuración y la versión del servidor web:

Apache: AcceptPathInfo
IIS: por ej. AllowPathInfoForScriptMappings y otros
y así sigue y sigue ...

Pero los administradores del servidor, posiblemente, le puede decir qué ajustes 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 esperada) en la configuración del servidor?

+0

Gracias por los enlaces Apache e IIS. Después de un poco de Google (basado en el conocimiento recién adquirido sobre AcceptPathInfo), encontré una solución para nginx también: http://kbeezie.com/view/php-self-path-nginx/ – Boldewyn

0

Desde mi experiencia diría PATH_INFO es generalmente disponible en entornos de alojamiento web normales y configuraciones de servidor - incluso en IIS - pero en raras ocasiones, no lo es. Al crear una aplicación que se supone que se puede implementar en tantas plataformas como sea posible, no confiaría en path_info en un nivel codificado.

Siempre que puedo, trato de construir una función de contenedor build_url() que, en función de un parámetro de configuración, utiliza ya sea

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

y usarlo en todas las URL que emita la aplicación.

+0

La abstracción siempre es una buena idea , estuvo de acuerdo. Sin embargo, me gustaría saber específicamente sobre las experiencias PATH_INFO y la disponibilidad de esta característica. – Boldewyn

0

Puede haber scripts ingenuos (autoenlace por ejemplo) que no reconocen el formato de esta URL.De este modo, disminuirá la posibilidad de que se creen enlaces a su contenido.
Dado que los patrones de expresión regular local son comunes para estas tareas, la probabilidad de falla es bastante real.

Técnicamente, esas URL están bien. SEO-wise, son 'menos perfectos'.

Cuestiones relacionadas