첫 번째 방법: Apache 환경에서 URL 주소를 다시 작성하려면 정규식이 가장 기본적인 요구 사항이지만 일반 URL 주소의 경우 기본 일치를 사용하면 대부분의 요구 사항을 충족할 수 있으므로 아주 특별한 경우가 아니면 URL 주소이지만 이것은 제가 논의하고 싶은 범위가 아닙니다. 몇 가지 간단한 단계를 통해 Apache에서 URL 주소를 다시 작성하는 방법을 알아보세요.
002
003 URL 예
004
005 URL 다시 쓰기: http://www.baidu.com/?p=152
006
007 원본 URL: http://www.baidu.com/p152.html
008
009 규칙 다시 작성:
010
011 ^p ([0-9]+).html /?p=$1 [L]
012
013 정규식 기본 지식:
014
015 ^ 일치하는 줄의 시작은 URL 주소의 시작과 일치합니다. RewriteRule의 경우 도메인 이름(http://www.xxxx.com)은 위와 같이 URL 주소의 일부가 아닙니다.?p =152
016
017 () 위와 같이 캡처된 표현식을 구분합니다: ([0-9]+)
018
019 [] 위와 같이 문자 클래스를 정의합니다. [0 -9]는 0-9의 숫자를 나타냅니다.
020
021 +는 이전 문자가 한 번 또는 여러 번 반복되고 일치될 수 있음을 나타냅니다. 위와 같이: [0-9]+, 임의의 숫자 조합을 나타냄
022
023 위와 같이 문자 이스케이프:
024
025 기타:
026
027 [L]은 마지막을 의미하고 나머지는 일치하지 않음
028
029 방법은 다음과 같습니다.
030
031 1. httpd.conf 파일을 열고 #
032 033 #LoadModule rewrite_module module/mod_rewrite.so 주석을 찾습니다. >034 035 2. httpd-vhosts.conf 파일을 열고 VirtualHost에 다시 쓰기 규칙을 추가합니다. 036 037 RewriteEngine On 038 039 RewriteRule ^p([0-9]+ ).html /?p=$1 [L] 040 041 기본적으로 이는 위의 두 단계입니다. 일반적으로 Apache에서 URL 주소 다시 쓰기는 상대적으로 간단합니다. 문서를 읽는 것보다 배우는 것이 훨씬 빠르지만 더 깊이 이해하려면 관련 문서를 읽어야 합니다. 다른 규칙을 사용자 정의할 수 있습니다. 기억하세요: 모든 일치는 실제로 정규식 교체 프로세스입니다. 042 043 검색 엔진 친화적인 URL 주소를 만드는 것은 PHP 프로그래머에게 매우 중요하므로 단순히 Apache에서 URL 주소 다시 쓰기를 배우는 것은 가장 기본적인 요구 사항 중 하나가 될 것입니다. 044 045 046 두 번째 방법: 047 048 1. 먼저 다시 쓰기 모듈이 설치되어 있는지 확인합니다. 049 050 cat httpd.conf | grep rewrite 051 LoadModule rewrite_module 모듈/mod_rewrite.so 052 053 2 의사 정적 HTML 연결 생성: 054 055 (1) 의사 정적 HTML 생성 056 057 < 끝에 추가 ;VirtualHost> 섹션 058 059 RewriteEngine on 060 RewriteRule /goods([0-9]+).html /goods.php?id=$1 [PT ]061 보다 표준적인 작성 방법은 다음과 같습니다. 062 RewriteRule ^(.*)/goods([0-9]+).html$ $1/goods.php?id= $2 [PT] 063 더 간결한 글쓰기: 064 /goods(d+).html /goods.php?id=$1 065 066 첫 번째( 0-9]+)는 매개변수 $1에 해당하고, 두 번째는 $2에 해당합니다. 067 068 예: 069
070 RewriteRule / forum-([0-9]+)-([0-9]+).html /forumdisplay.php?fid=$1&page=$2 [PT] 071 072 테스트 http://www.xxx.com/goods1.html이 /goods.php?id=1과 동일한 내용인가요? 073 074 마지막으로 교체하세요. 설정된 의사 링크가 있는 모든 링크 정적 HTML 주소 방법 075 076
077 [PT]: URL 전역 변환, 즉 변환된 Goods31.html은 Goods.php?id=31에 해당합니다(기본값은 매개변수 없음)
078 [R]: URL 리디렉션 Goods31.html 🎜>
083 RewriteCrond %{HTTP_HOST} !xxxx.com [R=301,L] 084 RewriteRule ^(.*을 사용하여 액세스하면 Goods.php?id=31로 이동합니다. )$ http://www.xxxx.com/warning.html [ R=301,L] 085 086 xxxx.com이 아닌 요청을 http://www로 리디렉션합니다. xxxx.com 087088 더 나은 접근 방식: 089 RewriteCond %{HTTP_REFERER} !^http://(www.)?xxxx.com/.*$ [NC] 090 RewriteRule .(mp3|rar|jpe|gif)$ http://www.xxxx.com/warning.jpg [R=301,L] 091 092 4. 바이두 방지 크롤러 : 093 RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [OR] 094 RewriteRule ^(.*)$ http://www. google.com [R=301,L] 095 Baidu에서 Google로 크롤러 전송 096 097 PS: PHP 의사 정적 방법 101 102 방법 1: 103 104 예를 들어, 이 웹페이지는 105 106 http:// www.xxxx.com/soft.php/1,100,8630.html 107 108 실제로 처리한 스크립트는 Soft.php 이고 매개변수는 1,100,8630 109 110 Soft.php?a=1&b=1=100&c=8630과 동일하지만 이 URL은 기억하기 너무 어렵습니다. 검색 엔진도 그것을 좋아하지 않습니다. 111 112 진정한 정적은 완전히 생성된 HTML입니다. 113 114 클라이언트 접속 시 직접 출력합니다. 스크립트 설명이 필요하지 않습니다. 트래픽이 매우 클 때(예: 매일 수백만 건의 방문이 있는 경우) 매우 좋은 결과를 얻을 수 있습니다. 즉, 이 HTML 페이지는 실제로 서버 측에 존재합니다. 115 116 물론 웹사이트의 트래픽이 그다지 크지 않을 때입니다. URL을 재작성하는 것이 가장 좋은 방법입니다. (개인적인 생각으로는 트래픽이 많을 때는 로드 밸런싱을 고려해 볼 수 있습니다. 둘 다 상관없습니다.) 117 118 재작성하는 방법은 여러 가지가 있습니다 URL.APACHE,IISREWRITE. 심지어 PHP 스크립트도 이를 직접 처리할 수 있습니다. 예를 들어 위의 예에서는 PHP 스크립트로 직접 처리합니다(이 방법의 장점은 트래픽이 많을 때 WEB 서버에 대한 부담을 직접적으로 줄여준다는 것입니다. PS: 이 역시 개인적인 의견입니다: 119 120 === ================================ ============ 121 122 PHP 의사정적 프로그램 구현 방법에 대해 이야기하기 위해 프로그램을 예로 들어보겠습니다. 이 방법은 이미 다른 포럼 커뮤니티에 게시되었습니다. 123 124 프로그램을 예로 들어보겠습니다. 125 126 http://www .xxxx.com/soft.php/1,100,8630.html 127 128 코드: 129 130 //서버 변수 사용 PATH_INFO 정보를 얻으려면 이 예제에서는 실행 스크립트 이름 뒤에 있는 부분인 /1,100,8630.html입니다. 131 132 if(@$path_info =$ _SERVER ["PATH_INFO"]){ 133 //정규 일치 매개변수 134 if(preg_match("// (d+),(d+),(d+).html/si", $path_info,$arr_path)){ 135 $gid =intval($arr_path[1]); //값 1 가져오기 136 $sid =intval($arr_path[2]) ; //값 100 가져오기 137 $softid =intval($arr_path[3]) //값 8630 가져오기
138 }else die("Path:Error!") ; 139 //soft.php?gid=1&sid=100&softid=8630 140 //그렇게 간단해요 ~) 141 방법 2:
142 Apache의 구성 파일 httpd.conf를 엽니다.
143 두 개의 장군 #Loadmodule Rewrite_module Modules/MOD_REWRITE The#🎜>
144 세 개의 추가:
145 & lt;
146 RewriteEngine에
147 #RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.html
148 RewriteRule ^(.*?(?:index|dispbbs))- ([-0-9]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2
149
150 넷째, ASP 게시물 URL 매핑을 구현해야 합니다. php post에 세 번째 단계에서
151 RewriteMap tolowercase int:tolower
152 RewriteCond %{QUERY_STRING} (? : boardid|page|id|replyid|star|skin)=d+ [NC]
153 RewriteRule ^(.*(?:index|dispbbs)).asp 1.php?{tolowercase:%{QUERY_STRING } }&__is_apache_rewrite=1
154 httpd.conf를 저장하고 Apache를 다시 시작하세요
155 방법 3:
156
157 함수 mod_rewrite( ){
158 글로벌
159 $ _GET
160 $nav=$ _SERVER["REQUEST_URI"]
161 $script_name=$ _SERVER ["SCRIPT_NAME"];
162 $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1)
163 $nav=preg_replace ("/^.ht(m){1}(l){0,1}$/","",$nav);//이 문장은 꼬리가 제거된 .html 또는 .htm입니다.
164 $vars = 폭발("/",$nav);
165 for($i=0;$i 166 $ _GET["$vars[$i]"]=$vars[$i+1]; 167 } 168 $ _GET; 169 } 170 mod_rewrite() 171 $yearn=$ _GET["year"];//결과는 '2006' 172 $action=$ _GET[ "action "]; // 결과는 '_add'입니다. 174 echo $ action ;?php 177 함수 mod_rewrite(){ 178 전역 $ _GET; 179 $nav= $ _SERVER["REQUEST_URI"] 180 $script_name= $ _SERVER["SCRIPT_NAME"]; 181 $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1) 182 $nav =preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//이 문장은 꼬리가 제거된 .html 또는 .htm입니다. 183 $vars = 폭발("/",$nav) 184 for($i=0;$i 185 $ _GET["$vars[$i]"]=$vars[$i+1]; 186 } 187 반환 188 $ _get ; 189} 190 mod_rewrite (); 191 $ Yearn = $ _get ["연도"] // 결과는 '2006'입니다.