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