¿Cómo puede una URL como http: //localhost/index.php/articles/edit/1/my-first-article trabajo sin un .htaccess?

StackOverflow https://stackoverflow.com/questions/966916

Pregunta

No entiendo esto:

http: //localhost/index.php/articles/edit / 1 / mi-primera-artículo

Esta URL se menciona como un ejemplo en el Kohana documentación marco . Metí todo en los archivos de mi instalación, y no hay .htaccess además de mi propio uno que no tiene nada que ver con eso.

Así que, ¿cómo puede ser que un index.php se llama, pero luego, como parámetros, las cosas se parece a directorios añadido a la URL? Eso no se ve "real".

O es sólo la forma nativa de PHP / Apache cosas / HTTP funciona realmente? Como yo lo entiendo, / siempre está diciendo "bueno, un directorio!". Hace realmente cero sentido para mí ... ¿cómo es posible? O tienen alguna parte de un .htaccess que yo no puedo ver / encontrar?

¿Fue útil?

Solución

En PHP puede obtener los datos después de que el nombre de archivo con el $_SERVER["PATH_INFO"] variable. Esto le permite obtener básicamente la información sin tener que utilizar variables GET, lo que significa que Google y co pensará que está utilizando páginas estáticas. Esto es básicamente una alternativa a mod_rewrite que a menudo se habilita mientras mod_rewrite es más a menudo no está habilitado.

Esto puede ser obvio para usted, pero no fue inmediatamente a mí, esto no funciona correctamente en las páginas de índice a menos que utilice el nombre de archivo. Por ejemplo, http://example.com/test/my/get/params no va a funcionar, mientras voluntad http://example.com/test/index.php/my/get/params.

Otros consejos

Desde el Apache docs :

  

Directiva AcceptPathInfo

     

Esta directiva controla si   solicitudes que contienen arrastra   información de nombre de ruta que sigue a una   nombre de archivo real (o archivo no existente   en un directorio existente) será   aceptado o rechazado. el arrastre   información de ruta se puede hacer   a disposición de los scripts en el PATH_INFO   variable de entorno.

     

Por ejemplo, supongamos que la ubicación   / test / se refiere a un directorio que   incluye solamente la fila de a uno   here.html. A continuación, las solicitudes de   /test/here.html/more y   /test/nothere.html/more tanto para recoger   / Más como PATH_INFO.

Así que supongo que esta configuración está habilitada en algún lugar como en httpd.conf. Tenga en cuenta que esto, como mod_rewrite, se puede habilitar / configurado en varios lugares - ver aquí .

AcceptPathInfo se enciende por su servidor. :)

No estoy usando Kohana, así que no sé si mi método será de ninguna utilidad, pero cuando un servidor no soporta archivos .htaccess (o reescribir las reglas) mi 'marco' genera URI de la siguiente manera:

http://www.domain.com/? / artículos / editar / 1 / mi-primera-artículo (nótese la?)

Es un método similar al utilizado por el marco de la rana, simplemente analizar $_SERVER['REQUEST_URI'] (o $_SERVER['HTTP-X-REWRITE-URL'] en servidores Windows) y explotar en el '/'.

Este método se reescribir completamente independiente y todavía genera más o menos amigable SEO de URI

Esperamos que sea de alguna utilidad para ti.

Probablemente no es el caso aquí, y ciertamente no es recomendable, y probablemente no es la respuesta correcta ...

PERO ...

He visto gente utiliza 404 páginas a analizar la solicitud y luego incluyen la página de la derecha con esa información.

.

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