Rewite 規則做用php
做用場景:html
注:nginx官方文檔:http://nginx.org/en/docs/http/ngx_http_rewrite_module.htmllinux
配置語法:nginx
簡單實例正則表達式
rewrite ^(.*)$ /pages/maintain.html break;
解釋說明:json
經常使用的正則表達式後端
在linux下,能夠用pcretest來測試安全
小示例app
rewrite index\.php$ /pages/maintain.html break; if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; }
解釋說明curl
(.*) 會把全部參數的內容提取,傳到/msie/下
last 中止rewrite檢測【若是沒有匹配到,會繼續向下匹配】
break 中止rewrite檢測【若是沒有匹配到,則再也不向下匹配,直接返回結果404】
redirect 返回302臨時重定向,地址欄會顯示跳轉後的地址
permanent 返回301永久重定向,地址欄會顯示跳轉後的地址
last與break的區別案例
test_rewrite1.conf
server { listen 80 default_server; server_name www.zhangbiao.com; 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"}'; } }
能夠在終端使用 curl -vL 能夠看到請求的全過程
curl -vL www.zhangbiao.com/last/
訪問
http://www.zhangbiao.com/test/
訪問
http://www.zhangbiao.com/last/
訪問
http://www.zhangbiao.com/break/
能夠發現訪問 last 的時候新創建了一個請求 /test/ ,而訪問/break/ 請求的時候 會去 /opt/app/code 下找相應的資源,沒找到因此報錯
test_rewrite1.conf
server { listen 80 default_server; server_name www.zhangbiao.com; access_log /var/log/nginx/log/host.access.log main; root /opt/app/code; location ~ ^/imooc { rewrite ^/imooc http://www.imooc.com/ permanent; #rewrite ^/imooc http://www.imooc.com/ redirect; } }
redirect 表示臨時的重定向 ,只要後端服務是開者的。每次訪問 /imoc 都會重定向到 http://www.imooc.com
permanent 表示永久重定向,第一次訪問成功後,把後端服務關閉後,訪問/imoc 仍然會重定向到 http://www.imooc.com
test_rewrite.conf
server { listen 80; server_name www.zhangbiao.com; 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; } error_page 500 502 503 504 404 /50x.html; }
訪問在 /opt/app/code/course/11/22 下存在的資源文件
http://www.zhangbiao.com/course-11-22-33.html
訪問在 /opt/app/code/course/11/22 下不存在的資源文件
http://www.zhangbiao.com/course-11-22-5
rewrite優先級規則