9.rewrite規則

1.功能

實現url重寫以及重定向

2.場景

  • URL訪問跳轉,支持開發設計

    • 頁面跳轉、兼容性支持、展示效果等
  • SEO優化

  • 維護

    • 後臺維護、流量轉發等
  • 安全

3.配置語法

Syntax: rewrite regex replacement [flag];
Default: -
Context:server, location, if

配置示例

rewrite ^(.*)$/pages/maintain.html break

4.flag

last 停止rewrite檢測
break 停止rewrite檢測
redirect 返回302臨時重定向,地址欄會顯示跳轉後的地址
permanent 返回301永久重定向,地址欄會顯示跳轉後的地址

5.配置

server {
    listen 80 default_server;
    server_name localhost;

    access_log  /var/log/nginx/log/host.access.log  main;
     
    root /opt/app/code; 
    location ~ ^/break {
        rewrite ^/break /test/ break;
    } 
 
    location ~ ^/last {
         rewrite ^/last /test/ last;
    }    
 
    location /test/ {
       default_type application/json;
       return 200 '{"status":"success"}';
    }
}

6.break與last的區別

在/opt/app/code目錄下沒有test文件夾,請求break會出現404,請求last會成功請求,break沒有繼續請求後面的test,而last請求了後面的test,請求了下面的定義的鏈接

server {
    listen       80;
    server_name  localhost;

    root   /opt/app/code;

    location / {
        rewrite ^/course-(\d+)-(\d+)-(\d+)\.html$ /course/$1/$2/course_$3.html break;
        
        if ($http_user_agent ~* Chrome) {
            rewrite ^/nginx http://coding.imooc.com/class/121.html redirect;
        } 

        if (!-f $request_filename) {
            rewrite ^/(.*)$ http://www.baidu.com/$1 redirect;
        }
        index  index.html index.htm;
    }

}

8.Rewrite規則優先級

執行server塊的rewrite指令

執行location匹配

執行選定的location中的rewrite

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章