¿Cómo manejan sitios web como Quora y Stackoverflow la reescritura de URL?

No reescriben las URL, estoy seguro de Quora y estoy bastante seguro de SO. Estas son las URL reales con las que trabajan: su motor de enrutamiento sabe cómo analizar una URL y a qué controlador llamar con qué parámetros (el controlador a su vez devolverá una determinada vista con un determinado objeto de base de datos adjunto).

En Django, por ejemplo, este sería el campo “babosa” en el modelo de datos, algo así como un título, pero con espacios reemplazados por guiones, y requeridos únicos. También puede ser la clave principal, pero generalmente no lo es, porque las cadenas no son claves primarias muy buenas (aunque, por supuesto, tendrá un índice, para permitir búsquedas rápidas).

Como este es un campo de modelo normal, puede aplicar cualquier lógica que desee. Por ejemplo, Quora agrega “-1”, “-2”, “-3”, es decir, hay un contador simple al final. La lógica es probablemente “si existe una URL, encuentre la última URL y agregue 1 al final”.

TL; DR: encuentre un marco que tenga un motor de enrutamiento real en lugar de confiar en la estructura de archivos y carpetas, y esto es fácil. De lo contrario, puede intentar configurar reglas de reescritura que pasen la parte posterior a la barra como un parámetro de consulta (“site .com / what-is-this” se convierte en “question.php? Q = what-is-this”), y manejarlo allí. Aún podría tener las mismas reglas con los contadores y demás, solo es cuestión de buscar otra columna en lugar de la columna PK.