Bonitas URL sin mod_rewrite, sin .htaccess

Sin la posibilidad de acceder a .htaccess, me encuentro en un impasse creativo. No hay mod_rewriting para mí. Sin embargo, quiero ser capaz de hacer cosas agradables como:

http://www.example.com/Blog/2009/12/10/ http://www.example.com/Title_Of_This_Page 

¿Cuáles son mis alternativas?

En respuesta a las respuestas:

  • Estoy construyendo con php5
  • No tengo acceso a .htaccess
  • http://www.example.com/index.php/Blog/ es una técnica conocida, pero no la prefiero. Es muestra el php por así decirlo.
  • ¿Cómo crearía archivos PHP sin extensión? ¿Sería esto el truco?
  • ¿Cuánto afectaría el rendimiento al usar la técnica 404 personalizada?

Si tiene los permisos para configurar documentos de error personalizados para su servidor, puede usar esto para redirigir las solicitudes 404.

Por ejemplo, para Apache ( http://httpd.apache.org/docs/2.0/mod/core.html#errordocument )

 ErrorDocument 404 /index.php 

En index.php, puede continuar su solicitud utilizando los datos de la matriz $ _SERVER.

También puedes tener URL como

 http://domain.com/index.php/Blog/Hello_World 

fuera de la caja con PHP5. A continuación, puede leer los parámetros de URL usando

 echo $_SERVER['PATH_INFO']; 

Recuerde validar / filtrar PATH_INFO y todas las demás variables de solicitud antes de usarlas en su aplicación.

Sé que esta pregunta es muy antigua, pero no vi a nadie más sugerir esta posible solución …

Puede acercarse mucho a lo que desea simplemente agregando un signo de interrogación después de la parte de dominio de la URL, es decir;

 http://www.example.com/?Blog/2009/12/10/ http://www.example.com/?Title_Of_This_Page 

Ambas solicitudes HTTP anteriores serán manejadas por el mismo script PHP ;

 www.example.com/index.php 

y en el script index.php , $_SERVER['REQUEST_URI'] para las dos páginas de arriba será respectivamente;

Blog/2009/12/10/

Title_Of_This_Page

para que pueda manejarlos como quiera.

Una forma bastante simple es:

  • declarar un 404 ErrorDocument (por ejemplo, PHP) en .htaccess
  • analizar la consulta utilizando $_SERVER y ver si corresponde a cualquier resultado
  • si es así, reemplace el estado HTTP 404 con el estado 200 usando header() e incluya index.php

Si omite una barra inclinada, Apache publicará el primer archivo [alfabéticamente] que coincida con ese nombre, independientemente de la extensión, al menos en los 2 servidores a los que tengo acceso.

No sé cómo podría usar esto para resolver su problema, pero puede ser útil en algún momento.

Por ejemplo, si http://www.somesite.com/abc.html y http://www.somesite.com/abc.php existen y se solicita http://www.somesite.com/abc.html , http://www.somesite.com/abc.html se http://www.somesite.com/abc.html .

La única forma es usar la página 404 personalizada. No tiene posibilidad de interpretar archivos sin extensión con intérprete PHP sin reconfigurar los tipos MIME del servidor web. Pero dices que no puedes editar incluso .htaccess, así que no hay otra forma.

Puede escribir una clase de URI que analice la URL amigable que definió.

Si la opción MultiViews está habilitada o puede convencer a quien tenga las claves para habilitarla, puede crear un script llamado Blog.php que le pasará las solicitudes a example.com/Blog/foo y obtendrá ‘/ foo’ en $_SERVER['PATH_INFO'] .