¿Cómo puede una URL como http: //localhost/index.php/articles/edit/1/my-first-article trabajo sin un .htaccess?
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?
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.