Recentemente, tenho estado ocupado com meu próprio programa de blog e, naturalmente, voltei-me para o problema de reescrita de URL, que é frequentemente discutido em blogs. Um dos motivos é um problema facial em um sistema de blog multiusuário. Originalmente, eu queria usar meu blog CSDN http://blog.csdn.net/joshualang como exemplo, mas pensei sobre isso e usei meu espaço ( http:/). /www.tyoo.net ), porque é para lá que irei depois de terminar meu blog.
Se a reescrita de URL necessária não for realizada como http://www.tyoo.net/blog/joshualang , um endereço de blog como http://www.tyoo.net/blog/default.aspx?Bloger=joshualang aparecerá; deve saber que um blog é considerado mais uma casa construída na Internet pela maioria dos internautas. Na vida real, eles levarão em consideração a distância do endereço residencial e a qualidade do transporte. Da mesma forma, a casa na Internet também deve ter um número de casa. isso é fácil de lembrar. Este número de casa não é muito longo (não muito decente), e adicionar vários parâmetros depois dele pode deixar as pessoas intimidadas. Se você quiser ler o artigo, terá que enfrentar muitas coisashttp://blog.tyoo.net. /Articles/Default.aspx?Bloger=joshualang&ArticleID=20070118234530Você sente alguma coisa? Vamos dar uma olhada em um efeito que muitos programas de blog têm agora: http://blog.tyoo.net/joshua/Articles/2007/01/18/ Todos conhecerão rapidamente os benefícios desse efeito, e este é este nos leva ao ponto-chave deste artigo!
Sim, precisamos atingir um dos nossos objetivos através de uma sequência tão regular.
Uma URL viável deve ser selecionada seguindo os seguintes critérios:
• Curta.
• Fácil de digitar.
• A estrutura do site pode ser vista.
• "Truncatable", que permite aos usuários navegar no site removendo componentes da URL.
Não preciso falar mais sobre esse ponto. Na verdade, é tudo uma questão de simplicidade e praticidade.
Nota: Falando nisso, é necessário ler o documento de Scott Mitchell no site do MSDN http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true#top
já Alguns especialistas deixaram os princípios da reescrita de URL bastante claros aqui. Se você não entender, você pode baixar o código-fonte do documento acima para estudá-lo.
Por uma questão de eficiência (o tempo das pessoas é precioso, e o tempo do programador é ainda mais), usei diretamente os componentes do URLRewriter.net. Na verdade, nunca tive nenhuma experiência em reescrever URLs antes, então li aproximadamente a fonte. programe algumas vezes e comece a começar. Claro, não há necessidade de nenhum conteúdo técnico no início, desde que a reescrita seja bem-sucedida, então, no processo contínuo de reescrita, descobriremos os problemas e encontraremos novas ideias e novas descobertas. . . Daí este artigo.
Vamos começar agora. Desta vez, o foco está na reescrita de URL do padrão de data que acabamos de mencionar
http://blog.tyoo.net/Articles/2007/01/18/233030/joshualang.aspx Este é o efeito final a ser alcançado aqui. .
Noções básicas: componente UrlRewriter.net (claro que você mesmo pode escrevê-lo), entenda os
parâmetros da expressão regular: ArticleID //Número do artigo [Tipo: string Comprimento: 14 (como: yyyymmddhhmmss) // Significativo e não repetido]
Blogger //Blog Nome de usuário mestre [Tipo: string começando com uma letra]
Um problema encontrado durante o processo de reescrita de URL é um erro 404 ao acessar um diretório ou arquivo inexistente. A sugestão fornecida por este documento no MSDN é criar pastas necessárias e páginas vazias no diretório do programa. É realmente problemático, milhares de diretórios precisam ser criados.
Como não podemos simplesmente acessar arquivos de diretórios inexistentes, simplesmente não precisamos acessar esses diretórios. Precisamos acessar nossos arquivos existentes (todos os meus URLs apontam para uma página Default.aspx no diretório raiz do Blog e depois carregam dinamicamente o grupo de controle para gerar diferentes páginas de função de visualização. Claro, desta vez queremos apontar para). esta página ~/Default .aspx
A tarefa a seguir é passar parâmetros, é claro que a URL é passada por valor. É por isso que é hora de reescrevê-lo.
O protagonista está prestes a aparecer novamente: expressões regulares.
O uso de expressões regulares aqui é muito legal ~ diretório http://blog.tyoo.net/joshualang/Articles/2007/01/18/Default.aspx você pode gerar regras de reescrita de URL como as seguintes:
Ao excluir as regras escritas desta forma, certamente ocorrerá um erro 404 porque a página que está sendo acessada não existe. Como ele pesquisará todo o caminho ao longo da marca do diretório, se você criar outro projeto de diretório, ele será muito grande. Dê uma olhada no seguinte código:
Agora que tenho tempo extra, ninguém escolherá criar um diretório. Em seguida, faça uso total dos arquivos existentes para concluir esta tarefa.
Na verdade, muitas pessoas podem pensar em usar nomes de arquivos em vez de estruturas de diretórios. Pensando bem, não é? Claro, isso requer um certo entendimento de expressões regulares.
Ok, vamos ver como funciona.
Você pode ver facilmente que usei "" para escapar de "/" e usei-o no nome do arquivo. A estrutura atual é
http://blog.tyoo.net/joshualang/2007/01/18.
Obviamente, meu ArticleID. é uma string baseada em ano, mês, dia, hora, minuto e segundo, porque faz sentido inserir dados sem considerar duplicação, e usar o tempo aqui também é conveniente para consulta. A combinação de 14 dígitos obtida por $2$3$4$5 é meu ArticleID. O registro pode ser facilmente encontrado através da data de publicação e número do artigo. O último benefício é especialmente óbvio ao excluir.
Agora vamos deletar a parte do tempo:
vez
, podemos excluir a URL neste padrão: http://blog.tyoo.net/joshualang/Articles/2007.aspx ou mesmo http://blog.tyoo.net/joshualang/Articles/Default.aspx.
não é muito simples? Mas é preciso prestar atenção a um problema: nada é possível e pode ser alcançado. Há muito mais coisas a considerar, como:
http://blog.tyoo.net/joshualang/Articles/2007.aspx e http: //blog.Qual é a diferença entre tyoo.net/joshualang/Articles/2007/.aspx ? Este último pode funcionar normalmente após seguir as regras acima?
O mesmonão pode
ser dito: http://blog.tyoo.net/joshualang/Articles/2007/01/08/.aspx também não é aceitável. Outras regras de resposta precisam ser definidas para obter efeitos de reescrita apropriados.
Ok, o efeito está praticamente aí; aqui está o código de regra completo:
Nota: Para evitar que os usuários excluam acidentalmente a importante extensão .aspx aqui, uso o nome de usuário como o nome de identificação virtual do arquivo.
O URL final obtido: http://blog.tyoo.net/Articles/2007/01/18/015000/joshualang.aspx
Ao mesmo tempo, o tempo máximo de 6 dígitos no final é definido para ser excluível e mais longo, mesmo que esteja perdida Também é mais conveniente encontrar a lista mais próxima do horário de publicação usando determinados números.
A remoção do nome de usuário não afetará o uso. Você ainda pode obter rapidamente a lista de artigos mais adequada de que precisa por meio do formato de hora detalhado. Se o nome de usuário estiver intacto, a lista de artigos correspondentes ao autor em um determinado período de tempo pode ser encontrada por exclusão.
Observe também: o formato do nome de usuário ([A-Za-z]{6-16}) e a ordem de validação da regra.
Resumir:
Depois de passar pelo processo normal de reescrita de URL, ele terá um formato estrito, como se esse diretório realmente existisse, mas a estrutura da estrutura parecerá mais conveniente e flexível, obtendo assim melhorias importantes na funcionalidade e na experiência do usuário. Vamos parar por aqui por enquanto. Se você tiver alguma dúvida, responda e participe da discussão. Se houver uma maneira melhor de reescrevê-lo, ficarei feliz em me informar.
http://www.cnblogs.com/Joshualang/archive/2007/01/19/624302.html