nginx URL 재 작성 (rewrite) 설정

5114 단어
URL , 301 URL
1. Nginx URL 재 작성 (rewrite) 안내
 apache web      ,rewrite        RUL      。
Nginx rewrite    PCRE     ,   perl                。
      nginx    rewrite   ,      PCRE   

2. rewrite 문법 형식 및 매개 변수 문법:
rewrite   URL       ,  regex (     )    ,
    replacement,   flag  。


rewrite            [flag];
                                flag  

   :     error_log    
  :perl               
    :           replacement
flag  :rewrite   flag  

rewrite        :
server,location,if

flag    :
last  #         ,        location URI  
break  #           ,           
redirect  #  302     ,            URL  
permanent  #  301     ,             URL  

2.1nginx rewrite 변 수 는 HTTP 요청 헤더 정보, 브 라 우 저 호스트 이름, URL 과 일치 하 는 데 사 용 됩 니 다.
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT;
connection & request: REMOTE_ADDR, QUERY_STRING;
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL;
system stuff: TIME_YEAR, TIME_MON, TIME_DAY。
    :
HTTP_USER_AGENT             ,     ;
HTTP_REFERER              ,         ;
HTTP_COOKIE               ,               ;
HTTP_HOST                 ServerName  ;
HTTP_ACCEPT                    MIME  ;      
REMOTE_ADDR              IP  
QUERY_STRING         URL       ;
DOCUMENT_ROOT               ;
SERVER_PORT               ;
SERVER_PROTOCOL            ;
TIME_YEAR             ;
TIME_MON              ;
TIME_DAY               ;

3. 예
3.0 어 려 운 장면
   :
 uri         "_",          "_"  proxy_pass  ,
  ,                
rewrite '^(\S+) +(\S+)(.*)' $1_$2$3 last;

3.1demo01
rewrite ^/(.*) http://www.zy.com/$1 permanent;
  :                                        
rewrite      ,      rewrite    。
regex    ^/(.*) ,         ,               。
replacement   http://www.zy.com/$1。  $1   regex  ()    ,         URL。
flag   permanent    301     ,      http://www.zy.com/$1    。

3.2demo02 vi
vi conf/vhost/www.abc.com.conf
1
server {
        listen 80;
        server_name abc.com;
        rewrite ^/(.*) http://www.abc.com/$1 permanent;
}
server {
        listen 80;
        server_name www.abc.com;
        location / {
                root /data/www/www;
                index index.html index.htm;
        }
        error_log    logs/error_www.abc.com.log error;
        access_log    logs/access_www.abc.com.log    main;
}
2
server {
        listen 80;
        server_name abc.com www.abc.com;
        if ( $host != 'www.abc.com'  ) {
                rewrite ^/(.*) http://www.abc.com/$1 permanent;
        }
        location / {
                root /data/www/www;
                index index.html index.htm;
        }
        error_log    logs/error_www.abc.com.log error;
        access_log    logs/access_www.abc.com.log    main;
}

3.3 zy. com 을 www. zy. com 으로 건 너 뛰 기
if ($host = zy.com' ) {
     #  $1   regex  ()    ,         URL。
     rewrite ^/(.*)$  http://www.zy.com/$1  permanent;
}

3.4 www. zy. com 방문 www. test. com / index 01. html
rewrite   ^/$  http://www.test.com/index01.html  permanent;

3.5 접근 / zy / test 01 / new index. html 로 이동, 브 라 우 저 주소 변경
rewrite   ^/zy/test01/$     /newindex.html     last;

3.6 다 중 도 메 인 이름 이 www. zy. com 으로 건 너 뛰 기
if ($host != ‘www.jfedu.net’ ) {
    rewrite ^/(.*)$  http://www.zy.com/$1  permanent;
}

3.7 접근 파일 과 디 렉 터 리 가 index. php 로 이동 하지 않 습 니 다.
if ( ! -e $request_filename ) {
    rewrite  ^/(.*)$  /index.php  last;
}

3.8 디 렉 터 리 교환 / xxxx / 123456 = = = > / xxxx? id = 123456
rewrite    ^/(.+)/(\d+)      /$1?id=$2       last;

3.9 판단 브 라 우 저 User Agent 이동
if( $http_user_agent  ~ MSIE) {
    rewrite ^(.*)$ /ie/$1 break;
}

3.10. sh,. flv,. mp3 를 파일 접미사 이름 으로 하 는 파일 에 접근 하 는 것 을 금지 합 니 다.
location ~ .*\.(sh|flv|mp3)${
       return 403;
} 

3.11 이동 사용자 접근 을 이동 단 으로 전환
if ( $http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)" ){
      rewrite ^/$    http://m.jfedu.net/    permanent;
}

3.12 방문 / 10690 / zy / 123 에서 / index. php 로 넘 어 갑 니까? tid / 10690 / items = 123, [0 - 9] 는 임의의 숫자 를 표시 하고 + 여러 개 를 표시 합 니 다. (. +) 는 여러 글자
rewrite   ^/([0-9]+)/zy/(.+)$     /index.php?tid/$1/items=$2     last;

3.13 일치 URL 접근 문자열 이동
if ($args ~* tid=13){
    return 404;
}

4. rewrite 기업 응용 장면
>>          URL,      ,            。

>>                     ,      URL             。

>>        ,             。  ,     360buy.com    jd.com

>>       、  、        URL   

좋은 웹페이지 즐겨찾기