Recientemente, he estado ocupado con mi propio programa de blogs y, naturalmente, recurrí al tema de la reescritura de URL del que a menudo se habla en los blogs. Una razón es un problema facial en un sistema de blogs multiusuario. Originalmente quería usar mi blog CSDN http://blog.csdn.net/joshualang como ejemplo, pero lo pensé y usé mi espacio ( http:/). /www.tyoo.net ), porque aquí es donde iré cuando termine mi blog.
Si no se realiza la reescritura de URL necesaria como http://www.tyoo.net/blog/joshualang , aparecerá una dirección de blog como http://www.tyoo.net/blog/default.aspx?Bloger=joshualang . Debe saber que la mayoría de los internautas consideran un blog como otra casa construida en Internet. En la vida real, considerarán la distancia de la dirección de la casa y la calidad del transporte. De manera similar, la casa en Internet también debe tener un número de casa. eso es fácil de recordar. Este número de casa no es demasiado largo (no es muy decente), y agregar un montón de parámetros después puede intimidar a la gente. Si quieres leer el artículo, tienes que enfrentar muchas cosashttp://blog.tyoo.net. /Articles/Default.aspx?Bloger=joshualang&ArticleID=20070118234530¿Sientes algo? Echemos un vistazo a un efecto que ahora tienen muchos programas de blogs: http://blog.tyoo.net/joshua/Articles/2007/01/18/ Todos conocerán los beneficios de este efecto de un vistazo, y este es este. ¡Nos lleva al punto clave de este artículo!
Sí, necesitamos lograr uno de nuestros objetivos a través de una cadena tan regular.
Se debe seleccionar una URL viable siguiendo los siguientes criterios:
• Corta.
• Fácil de escribir.
• Se puede ver la estructura del sitio.
• "Truncatable", que permite a los usuarios navegar por el sitio eliminando componentes de la URL.
No necesito decir más sobre este punto, de hecho, se trata de simplicidad y practicidad.
Nota: Hablando de eso, es necesario leer el documento de Scott Mitchell en el sitio web de MSDN http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true#top
ya Algunos expertos han dejado lo suficientemente claros los principios de la reescritura de URL aquí. Si no los comprende, puede descargar el código fuente del documento anterior para estudiarlo.
En aras de la eficiencia (el tiempo de las personas es valioso y el tiempo de los programadores lo es aún más), utilicé directamente los componentes de URLRewriter.net. De hecho, nunca antes había tenido experiencia en la reescritura de URL, por lo que leí aproximadamente la fuente. programa varias veces y comencé a comenzar. Por supuesto, no hay necesidad de ningún contenido técnico al principio. Mientras la reescritura sea exitosa, se sentirá bien. Luego, en el proceso de reescritura continua, descubriremos los problemas y encontraremos nuevas ideas y nuevos descubrimientos. . . De ahí este artículo.
Empecemos ahora. Esta vez, la atención se centra en la reescritura de URL del patrón de fecha que acabamos de mencionar
http://blog.tyoo.net/Articles/2007/01/18/233030/joshualang.aspx . Este es el efecto final que se logrará aquí. .
Conceptos básicos: componente UrlRewriter.net (por supuesto, puede escribirlo usted mismo), comprenda los
parámetros de expresión regular: ArticleID //Número de artículo [Tipo: cadena Longitud: 14 (como: aaaammddhhmmss) // Significativo y no repetido]
Bloger //Blog Nombre de usuario maestro [Tipo: cadena que comienza con una letra]
Un problema encontrado durante el proceso de reescritura de URL es un error 404 al acceder a un directorio o archivo inexistente. La sugerencia proporcionada por este documento en MSDN es crear las carpetas necesarias y las páginas vacías en el directorio del programa. De hecho, es problemático, es necesario crear miles de directorios.
Dado que no podemos acceder simplemente a archivos de directorios inexistentes, simplemente no necesitamos acceder a dichos directorios. Necesitamos acceder a nuestros archivos existentes (todas mis URL apuntan a una página Default.aspx en el directorio raíz del Blog y luego cargan dinámicamente el grupo de control para generar diferentes páginas de funciones de vista. Por supuesto, esta vez queremos señalar). esta página ~/Default .aspx;
La siguiente tarea es pasar parámetros, por supuesto, la URL se pasa por valor. Por eso es hora de reescribirlo.
El protagonista está a punto de reaparecer: las expresiones regulares.
El uso de expresiones regulares aquí es realmente genial ~ http://blog.tyoo.net/joshualang/Articles/2007/01/18/Default.aspx En el directorio puedes generar reglas de reescritura de URL como las siguientes:
<RewriterRule>
<LookFor>~/(w{6,16})/Articles/(d{4})/(d{2})/(d{2})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1&año=$2&mes=$3&día=$4</SendTo>
</RewriterRule>
Al eliminar las reglas escritas de esta manera, definitivamente se producirá un error 404 porque la página a la que se accede no existe. Debido a que buscará a lo largo de su marca de directorio, si crea otro proyecto de directorio, será demasiado grande. Mire el siguiente código:
<RewriterRule>
.
<LookFor>~/(w{6,16})/Articles/(d{4})/(d{2})/(d{2})/(d{6})/Default.aspx</LookFor >
<SendTo>~/Default.aspx?Bloger=$1&año=$2&mes=$3&día=$4&time=$5</SendTo>
</RewriterRule>
Ahora que tengo tiempo extra, nadie elegirá crear un directorio. Luego, aproveche al máximo los archivos existentes para completar esta tarea.
De hecho, muchas personas pueden pensar en utilizar nombres de archivos en lugar de estructuras de directorios. Ahora que lo pienso, ¿no? Por supuesto, esto requiere cierta comprensión de las expresiones regulares.
Bien, veamos cómo funciona.
<Regla de reescritura>
<LookFor>~/(w{5,16})/Articles/(d{4})/(d{2})/(d{2})/(d{6}).aspx</ Buscar>
<SendTo>~/Default.aspx?ArticleID=$2$3$4$5&Bloger=$1</SendTo>
</RewriterRule>
Puedes ver fácilmente que usé "" para escapar de "/" y lo usé en el nombre del archivo. La estructura actual es
http://blog.tyoo.net/joshualang/2007/01/18.
Obviamente, mi ID de artículo. es una cadena basada en año, mes, día, hora, minuto y segundo, porque tiene sentido insertar datos sin considerar la duplicación, y usar el tiempo aquí también es conveniente para realizar consultas. La combinación de 14 dígitos obtenida por $2$3$4$5 es mi ID de artículo. El registro se puede encontrar fácilmente a través de la fecha de publicación y el número de artículo. El último beneficio es especialmente obvio al eliminar.
Ahora eliminemos la parte de tiempo:
<RewriterRule>
<LookFor>~/(w{5,16})/Articles/(d{4})/(d{2})/(d{2}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$2$3$4&Bloger=$1</SendTo>
</RewriterRule>
su
vez, podemos eliminar la URL siguiendo este patrón: http://blog.tyoo.net/joshualang/Articles/2007.aspx o incluso http://blog.tyoo.net/joshualang/Articles/Default.aspx.
¿No es muy simple? Pero hay que prestar atención a un problema: nada es posible y se puede lograr. Hay muchas más cosas a considerar, como por ejemplo:
http://blog.tyoo.net/joshualang/Articles/2007.aspx y http: //blog. ¿Cuál es la diferencia entre tyoo.net/joshualang/Articles/2007/.aspx ? ¿Puede este último ejecutarse normalmente después de seguir las reglas anteriores? No se puede
decir lo mismo: http://blog.tyoo.net/joshualang/Articles/2007/01/08/.aspx tampoco es aceptable. Es necesario definir otras reglas de respuesta para lograr efectos de reescritura adecuados.
Bien, el efecto está aproximadamente ahí; aquí está el código de regla completo:
<!--autor: Joshua Li ( [email protected] ) QQ:245965348-->
<!-- Reglas para mostrar contenido de blog -->
<Regla de reescritura>
<LookFor>~/([A-Za-z]w{5,16})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</RewriterRule>
<!-- Reglas para el listado de artículos -->
<Regla de reescritura>
<Buscar>~/Artículos/(d{4})/(d{2})/(d{2})/(d{1,6})/([A-Za-z]w {5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2$3$4&Bloger=$5</SendTo>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})/(d{1,6})((/)?).aspx</ Buscar>
<Enviar a>~/Default.aspx?ArticleID=$1$2$3$4</Enviar a>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})/([A-Za-z]w{5,16}).aspx</ Buscar>
<SendTo>~/Default.aspx?ArticleID=$1$2$3&Bloger=$4</SendTo>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})((/)?).aspx</LookFor>
<Enviar a>~/Default.aspx?ArticleID=$1$2$3</Enviar a>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})/(d{2})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2&Bloger=$3</SendTo>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})/(d{2})((/)?).aspx</LookFor>
<Enviar a>~/Default.aspx?ArticleID=$1$2</Enviar a>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1&Bloger=$2</SendTo>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/(d{4})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1</SendTo>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</RewriterRule>
<Regla de reescritura>
<LookFor>~/Articles/Default.aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=-1</SendTo>
</RewriterRule>
Nota: Para evitar que los usuarios eliminen accidentalmente la importante extensión .aspx aquí, utilizo el nombre de usuario como nombre de identificación virtual del archivo.
La URL final obtenida: http://blog.tyoo.net/Articles/2007/01/18/015000/joshualang.aspx
Al mismo tiempo, el tiempo máximo de 6 dígitos al final está configurado para que sea eliminable y más largo. incluso si se pierde También es más conveniente encontrar la lista más cercana a la hora de publicación utilizando ciertos números.
Eliminar el nombre de usuario no afectará el uso. Aún puede obtener rápidamente la lista más adecuada de artículos que necesita a través del formato de hora detallado. Si el nombre de usuario está intacto, la lista de artículos correspondientes al autor en un período de tiempo específico se puede encontrar mediante eliminación.
Tenga en cuenta también: el formato del nombre de usuario ([A-Za-z]{6-16}) y el orden de validación de la regla.
Resumir:
Después de pasar el proceso normal de reescritura de URL, tendrá un formato estricto como si este directorio realmente existiera, pero la estructura del marco parecerá más conveniente y flexible, obteniendo así mejoras clave en la funcionalidad y la experiencia del usuario. Si tiene alguna pregunta, responda y únase a la discusión. Si hay una mejor manera de reescribirlo, estaré encantado de hacérmelo saber.
http://www.cnblogs.com/Joshualang/archive/2007/01/19/624302.html