Esta pregunta trata principalmente sobre el diseño de URL y solo de manera incidental sobre la reescritura. Una vez que haya diseñado sus URL para que sean cool, hay muchas maneras de hacer que funcionen, incluida la reescritura a nivel de servidor o el uso de un marco web que hace un despacho basado en URL (creo que los marcos web más modernos lo hacen actualmente).
La belleza está en el ojo del espectador, pero estoy de acuerdo con usted en que muchas URL de búsqueda son feas. ¿Qué los hace así? Creo que lo principal que hace que las URL sean feos es cruxt en la URL que no agrega significado semántico sino que es el resultado de un detalle de implementación, como (.aspx) u otras extensiones. Mi regla es que si una URL devuelve (X) HTML que no debería tener una extensión, de lo contrario debería hacerlo.
En el caso de una búsqueda, el hecho es que la sintaxis de búsqueda estándar agrega significado: indica que la página es una búsqueda, indica que los argumentos son nombrados y reordenados. La fealdad proviene principalmente de la? & = caracteres, pero realmente cualquier otra cosa que haga será reemplazar estos mismos caracteres con caracteres más atractivos como | - /, pero a costa de hacer que la URL sea opaca para cualquier software que desee analizarlo como una araña, un proxy de almacenamiento en caché servidor, o algo más.
Por lo tanto, piense detenidamente sobre no utilizar la sintaxis estándar y asegúrese de tener una buena razón para hacerlo. Creo que en el caso en que sus argumentos tengan un orden natural y deben definirse todos para que la búsqueda tenga sentido y son compactos, puede insertarlos en la URL. Por ejemplo, en una URL del blog que pueda tener:
/weblog/entries/2008
/weblog/entries/2008/11
/weblog/entries/2008/11/22
para definir una búsqueda de las entradas a partir de 2008, noviembre de 2008, y el 22 de noviembre de 2008, respectivamente. Tus URL deben ser únicas e inequívocas; a veces la gente pone en/-/para los parámetros de búsqueda faltantes, que creo que es bastante compacto. Sin embargo, evitaría presionar parámetros potencialmente largos, como una consulta de texto de forma libre, en la URL. /weblog/entries/containing/here% 20is% 20some% 20freeform% 20text% 20blah% 20blah no es más atractivo que usar la sintaxis de la consulta.
Si va a utilizar la sintaxis de consulta estándar, elegir nombres de argumento que tengan sentido podría mejorar el atractivo, de alguna manera. products/search? description = "blah", aunque es más largo, es probablemente mejor que products/search? q = "blah". En este punto, está disminuyendo el rendimiento, creo.
No creo que haya una forma bonita de lograr eso, así que solo iría con params. –