Por supuesto, es agradable dar a los usuarios URL amigables para su contenido en su sitio. Pero, ¿cuál es la mejor manera de hacerlo? Hay muchas ventajas en algo como foo.com/users/alice, y lo más importante es que no está saturando el espacio de nombres raíz. Pero creo que la simplicidad para los usuarios supera todo eso. Muchos sitios grandes parecen estar de acuerdo (me vienen a la mente los siguientes: friendfeed, delicious y flickr) y esta pregunta es acerca de cómo lograr eso en el lado del servidor.foo.com/alice vs. foo.com/users/alice
Supongamos que la URL real para alice es foo.com/userpage?user=alice y que si alguien intenta navegar a una página de usuario inexistente (digamos foo.com/bob) debería llegar a foo.com/createnew ? usuario = bob.
El usuario, por supuesto, nunca debería ver las feas URL "reales" anteriores, solo foo.com/alice o foo.com/bob. Y tenga en cuenta que el espacio de nombres raíz se comparte. Por ejemplo, foo.com/help no debe traducirse a foo.com/userpage?user=help.
Presumiblemente estoy pidiendo algunas reglas simples de mod_rewrite, pero tal vez hay un enfoque completamente diferente de esto en el que no estoy pensando. En cualquier caso, pensé que sería bueno registrar una solución definitiva o de "mejores prácticas" para esta pregunta común.
PD: Siéntase libre de comentar sobre los méritos de otras alternativas como alice.foo.com o users.foo.com/alice.
PPS: Creo que he visto este tema debatido en otras cuestiones, pero parece ser difícil de buscar. ¡Los indicadores son bienvenidos! Además de palabras clave adicionales para que esto sea más fácil de buscar, por supuesto. Palabras clave: espacio de usuario, espacio de nombres global, espacio de nombres URL.
¡Espero que funcione! ¡Recuerde que tendrá que codificar una función user_exists()! – alex