Nginx Rewrite規則初探
Nginx rewrite(nginx url地址重寫)
Rewrite 主要的功能就是實現URL的重寫,Nginx的Rewrite規則採用Pcre,perl相容正規表示式的語法規則匹配,如果需要Nginx的Rewrite功能,在編譯Nginx之前,需要編譯安裝PCRE庫。
Rewrite 主要的功能就是實現URL的重寫,Nginx的Rewrite規則採用Pcre,perl相容正規表示式的語法規則匹配,如果需要Nginx的Rewrite功能,在編譯Nginx之前,需要編譯安裝PCRE庫。
通過Rewrite規則,可以實現規範的URL、根據變數來做URL轉向及選擇配置。
if 指令
規則語法:
規則語法:
- if ($http_user_agent ~MSIE){
- rewrite ^(.*)$/msie/$1 break;
- }
- if (!-f$request_filename){
- rewrite ^/img/(.*)$/site/$host/images/$1 last;
- }
rewrite 語法規則:
變數名:
變數名可以使用"="或"!="運算子
~ 符號表示區分大小寫字母匹配
~* 符號表示不區分大小寫字母匹配
!~ 和 !~ 與~ !~ 相反
-f 和 !-f 用來判斷檔案是否存在
-d 和 !-d 用來判斷目錄是否存在
-e 和 !-e 用來判斷檔案或目錄是否存在
-x 和 !-x 用來判斷檔案是否可以執行
也支援$1到$9位置引數
return指令
示例:,如果訪問的URL以.sh .bash 結尾,返回狀態碼403
- location ~ .*\.(sh|bash)?$
- {
- return 403;
- }
rewrite指令
- rewrite指令的最後一項引數為flag標記,支援的flag標記主要有以下幾種:
- last :相當於Apache裡德(L)標記,表示完成rewrite;
- break;本條規則匹配完成後,終止匹配,不再匹配後面的規則
- redirect:返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址
- permanent:返回301永久重定向,瀏覽器位址列會顯示跳轉後的URL地址
- last和break用來實現URL重寫,瀏覽器位址列URL地址不變
例項:將訪問/b跳轉到/bbs目錄上去:
- location /b {
- autoindex on;
- alias /usr/local/nginx/html/redhat;
- rewrite ^/b/?$ /bbs permanent;
- }
- location /bbs {
- autoindex on;
- alias /usr/local/nginx/html/bbs;
- }
rewrite規則編寫例項
1,將原來要訪問/b的目錄重寫為/bbs
核心語句:
1,將原來要訪問/b的目錄重寫為/bbs
核心語句:
- rewrite ^/b/?$ /bbs permannet;
2,根據不同的瀏覽器將得到不同的結果。
- if ($http_user_agent ~ Firefox) {
- rewrite ^(.*)$ /firefox/$1 break;
- }
- if ($http_user_agent ~ MSIE) {
- rewrite ^(.*)$ /msie/$1 break;
- }
- if ($http_user_agent ~ Chrome) {
- rewrite ^(.*)$ /chrome/$1 break;
- }
3.防止盜鏈:
根據Referer資訊防止盜鏈,程式碼如下:
- location ~*\.(gif|jpg|png|swf|flv)${
- valid_referers none blocked www.cheng.com*.test.com;
- if ($invalid_referer)
- rewrite ^/(.*) http://www.cheng.com/error.html
- }
4.實現域名跳轉:
- server {
- listen 80;
- server_name cheng.example.com;
- write ^(.*)$ http://zhang.example.com/$1 permanent;
- location / {
- root html;
- index index.html index.htm;
- }
相關文章
- nginx location匹配及rewrite規則Nginx
- Nginx常用Rewrite偽靜態規則Nginx
- Nginx的Rewrite規則與例項Nginx
- Nginx rewrite 規則 與 proxy_pass 實現Nginx
- nginx配置location總結及rewrite規則寫法Nginx
- 第七章:nginx的rewrite規則詳解Nginx
- rewrite規則中引數多於9個的處理方式 apache nginxApacheNginx
- nginx rewriteNginx
- Nginx RewriteNginx
- Apache的rewrite規則詳細介紹Apache
- nginx負載均衡(5種方式)、rewrite重寫規則及多server反代配置梳理Nginx負載Server
- nginx location匹配規則Nginx
- Nginx 跳轉規則Nginx
- apache的rewrite規則無法載入問題Apache
- Nginx rewrite 詳解Nginx
- Nginx匹配規則練習Nginx
- Nginx 重寫規則指南Nginx
- 利用apache的mod_rewrite做URL規則重寫Apache
- Apache 重寫規則的常見應用 (rewrite)(轉)Apache
- nginx rewrite語法格式Nginx
- nginx thinkphp rewrite配置項NginxPHP
- nginx之rewrite匹配需求Nginx
- nginx的rewrite設定Nginx
- nginx高階篇rewriteNginx
- Nginx的location配置規則梳理Nginx
- Nginx 初探Nginx
- Nginx 實現 Rewrite 跳轉Nginx
- nginx的location 規則匹配練習Nginx
- Nginx location匹配及Rewrite重寫Nginx
- Nginx URL重寫規則配置詳解Nginx
- Nginx Rewrite實際應用配置解析Nginx
- Nginx 學習總結(4)—— Rewrite 模組Nginx
- nginx通過rewrite方式處理路由Nginx路由
- 【記錄】那些很實用的Nginx規則Nginx
- nginx的一些規則案例備忘Nginx
- nginx location規則優先順序比較Nginx
- nginx學習-ngx_http_rewrite_module模組NginxHTTP
- Apache之Rewrite和RewriteRule規則梳理以及http強轉https的配置總結ApacheHTTP