최근 블로그 프로그램으로 바쁜 나날을 보내다 보니 자연스럽게 블로그에서 자주 거론되는 URL 재작성 문제에 눈을 돌리게 되었습니다. 한 가지 이유는 다중 사용자 블로그 시스템의 얼굴 문제입니다. 원래는 내 CSDN 블로그인 http://blog.csdn.net/joshualang을 예로 사용하고 싶었지만 이에 대해 생각하고 내 공간( http:/ /www.tyoo.net ), 블로그를 마친 후 이곳으로 갈 것이기 때문입니다.
http://www.tyoo.net/blog/joshualang 과 같이 필요한 URL 재작성이 수행되지 않으면 http://www.tyoo.net/blog/default.aspx?Bloger=joshualang 과 같은 블로그 주소가 나타납니다. 대부분의 네티즌들은 블로그를 인터넷을 기반으로 한 또 다른 집으로 간주한다는 사실을 알아야 합니다. 실생활에서는 집 주소와의 거리와 교통의 질을 고려할 것입니다. 마찬가지로 인터넷상의 집에도 집 번호가 있어야 합니다. 기억하기 쉽습니다. 이 집 번호는 너무 길지 않으며(그다지 괜찮지 않음) , 그 뒤에 많은 매개변수를 추가하면 사람들이 겁을 먹을 수도 있습니다./Articles/Default.aspx?Bloger=joshualang&ArticleID=20070118234530 뭔가 느껴지시나요? 현재 많은 블로그 프로그램들이 가지고 있는 효과를 살펴보겠습니다: http://blog.tyoo.net/joshua/Articles/2007/01/18/ 누구나 이 효과의 이점을 한눈에 알 수 있을 것입니다. 이 글의 핵심을 알려드리겠습니다!
그렇습니다. 우리는 매우 규칙적인 문자열을 통해 목표 중 하나를 달성해야 합니다.
실행 가능한 URL은 다음 기준에 따라 선택해야 합니다.
• 짧음.
• 입력하기 쉽습니다.
• 사이트의 구조를 볼 수 있습니다.
• "Truncatable" - 사용자가 URL 구성 요소를 제거하여 사이트를 검색할 수 있도록 합니다.
사실 이 점은 단순성과 실용성에 관한 것입니다.
참고: 말하자면이미
MSDN 웹사이트 http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true#top 에서 Scott Mitchell의 문서를 읽어야 합니다.
일부 전문가는 여기에서 URL 재작성 원칙을 충분히 명확하게 설명했습니다. 이해가 되지 않으면 위 문서의 소스 코드를 다운로드하여 연구할 수 있습니다.
효율성을 위해(사람의 시간은 소중하고, 프로그래머의 시간은 더욱 소중합니다) URLRewriter.net의 구성요소를 직접 사용했습니다. 사실 저는 URL 재작성 경험이 한 번도 없었기 때문에 소스를 대략적으로 읽어보았습니다. 몇 번 프로그램을 시작하고 시작했습니다. 물론 처음에는 기술적인 내용이 필요하지 않습니다. 재작성이 성공하면 기분이 좋아질 것입니다. 그런 다음 지속적인 재작성 과정에서 문제점을 찾아내고 새로운 아이디어와 발견을 발견하게 될 것입니다. . . 그러므로 이 기사.
지금 시작해 보겠습니다. 이번에는 실제로 방금 언급한 날짜 패턴의 URL 재작성에 초점을 맞췄습니다.
http://blog.tyoo.net/Articles/2007/01/18/233030/joshualang.aspx 이것이 여기서 달성할 최종 효과입니다. .
기본 사항: UrlRewriter.net 구성 요소(물론 직접 작성할 수 있음), 정규식 매개
변수 이해: ArticleID //기사 번호 [유형: 문자열 길이: 14(예: yyyymmddhhmmss) // 의미가 있으며 반복되지 않음]
Bloger //Blog 마스터 사용자 이름 [유형: 문자로 시작하는 문자열]
URL 재작성 과정에서 발생하는 한 가지 문제는 존재하지 않는 디렉터리나 파일에 액세스할 때 발생하는 404 오류입니다. MSDN에서 이 문서에서 제공하는 제안은 프로그램 디렉터리에 필요한 폴더와 빈 페이지를 만드는 것입니다. 실제로 수천 개의 디렉터리를 만들어야 합니다.
존재하지 않는 디렉토리 파일에만 액세스할 수는 없으므로 그러한 디렉토리에 액세스할 필요는 없습니다. 기존 파일에 액세스해야 합니다(내 모든 URL은 블로그의 루트 디렉터리 아래에 있는 Default.aspx 페이지를 가리킨 다음 컨트롤 그룹을 동적으로 로드하여 다른 보기 기능 페이지를 생성합니다). 이 페이지 ~/Default .aspx;
다음 작업은 매개변수를 전달하는 것입니다. 물론 URL은 값으로 전달됩니다. 그렇기 때문에 다시 작성해야 할 때입니다.
다시 등장할 주인공은 정규 표현식이다.
여기서 정규식을 사용하는 것은 정말 멋지네요~ http://blog.tyoo.net/joshualang/Articles/2007/01/18/Default.aspx 디렉토리에서 다음과 같은 URL 재작성 규칙을 생성할 수 있습니다.
< RewriterRule>
이렇게 작성한 규칙을 삭제하게 되면 접속하는 페이지가 존재하지 않기 때문에 반드시 404에러가 발생하게 됩니다. 디렉터리 표시를 따라 아래까지 검색하기 때문에 다른 디렉터리 프로젝트를 생성하면 너무 커집니다. 다음 코드를 살펴보세요.
이제 여유 시간이 생겼으므로 누구도 디렉토리 생성을 선택하지 않을 것입니다. 그런 다음 기존 파일을 최대한 활용하여 이 작업을 완료하세요.
실제로 많은 사람들이 디렉터리 구조 대신 파일 이름을 사용하는 것을 생각할 수 있습니다. 생각해보면 그렇지 않나요? 물론 이를 위해서는 정규식에 대한 어느 정도의 이해가 필요합니다.
좋아요, 어떻게 작동하는지 봅시다.
<리라이터규칙>
<찾아보기>~/(w{5,16})/Articles/(d{4})/(d{2})/(d{2})/(d{6}).aspx 찾아보기>
""를 사용하여 "/"를 이스케이프하고 파일 이름에 사용한 것을 쉽게 알 수 있습니다. 현재 구조는
http://blog.tyoo.net/joshualang/2007/01/18입니다.
분명히 내 ArticleID입니다. 은 연, 월, 일, 시, 분, 초를 기준으로 한 문자열이므로 중복을 고려하지 않고 데이터를 삽입하는 것이 합리적이고 여기에 시간을 사용하는 것이 쿼리에도 편리하기 때문입니다. $2$3$4$5로 얻은 14자리 조합이 나의 ArticleID입니다. 해당 기록은 발행일과 논문번호를 통해 쉽게 찾을 수 있습니다. 마지막 이점은 삭제할 때 특히 분명합니다.
이제 시간 부분을 삭제해 보겠습니다.
그러면 URL을 다음 패턴으로 삭제할 수 있습니다: http://blog.tyoo.net/joshualang/Articles/2007.aspx 또는 http://blog.tyoo.net/joshualang/Articles/Default.aspx
. 아주 간단하지 않나요? 그러나 문제에 주의를 기울여야 합니다. 어떤 것도 불가능하며 달성할 수 있습니다. 고려해야 할 사항이 더 많이 있습니다. 예를 들면
http://blog.tyoo.net/joshualang/Articles/2007.aspx 및 http: //blog.tyoo.net/joshualang/Articles/2007/.aspx의 차이점은 무엇입니까 ? 위의 규칙을 따르면 후자가 정상적으로 실행될 수 있습니까?
같은 말은 할수 없습니다
. http://blog.tyoo.net/joshualang/Articles/2007/01/08/.aspx 도 허용되지 않습니다. 적절한 재작성 효과를 얻으려면 다른 응답 규칙을 정의해야 합니다.
좋습니다. 대략적인 효과는 다음과 같습니다. 전체 규칙 코드는 다음과 같습니다.
<리라이터규칙>
<리라이터규칙>
<찾을 대상>~/Articles/(d{4})/(d{2})/(d{2})/(d{1,6})/([A-Za-z]w {5,16}).aspx
<리라이터규칙>
<찾아보기>~/Articles/(d{4})/(d{2})/(d{2})/(d{1,6})((/)?).aspx 찾아보기>
<리라이터규칙>
<찾아보기>~/Articles/(d{4})/(d{2})/(d{2})/([A-Za-z]w{5,16}).aspx 찾아보기>
<리라이터규칙>
<찾아보기>~/Articles/(d{4})/(d{2})/(d{2})((/)?).aspx
<리라이터규칙>
<리라이터규칙>
<리라이터규칙>
<리라이터규칙>
<리라이터규칙>
<리라이터규칙>
참고: 여기서는 사용자가 실수로 중요한 .aspx 확장자를 삭제하는 것을 방지하기 위해 사용자 이름을 파일의 가상 식별 이름으로 사용합니다.
최종 획득 URL : http://blog.tyoo.net/Articles/2007/01/18/015000/joshualang.aspx
동시에 마지막 시간 최대 6자리는 삭제 가능하고 길게 설정되어 있으며, 분실되더라도 특정 번호를 이용하여 발행 시점에 가장 가까운 목록을 찾는 것도 가장 편리합니다.
사용자 이름을 제거해도 사용에는 영향을 미치지 않습니다. 자세한 시간 형식을 통해 필요한 가장 적합한 기사 목록을 빠르게 얻을 수 있습니다. 사용자 이름이 그대로인 경우 특정 기간의 작성자에 해당하는 기사 목록을 삭제하여 찾을 수 있습니다.
또한 사용자 이름 형식([A-Za-z]{6-16}) 및 규칙 유효성 검사 순서도 참고하세요.
요약:
일반적인 URL 재작성 프로세스를 통과하면 이 디렉토리가 실제로 존재하는 것처럼 엄격한 형식을 갖게 되지만 프레임워크 구조는 더욱 편리하고 유연해져서 기능과 사용자 경험이 크게 향상됩니다. 질문이 있으시면 답변을 주시고 토론에 참여해 주시기 바랍니다. 다시 작성하는 더 좋은 방법이 있으면 알려주시면 감사하겠습니다.
http://www.cnblogs.com/Joshualang/archive/2007/01/19/624302.html