常用的nginx rewrite重寫規(guī)則有哪些

小億
115
2023-08-14 18:55:11

常用的nginx rewrite重寫規(guī)則有以下幾種:

  1. 重定向:
  • 將所有請(qǐng)求重定向到一個(gè)新的URL:rewrite ^/(.*)$ http://newdomain.com/$1 permanent;

  • 將只有特定路徑的請(qǐng)求重定向到新的URL:rewrite ^/old-path/(.*)$ /new-path/$1 permanent;

  • 將HTTP請(qǐng)求重定向到HTTPS:rewrite ^/(.*)$ https://$host/$1 permanent;

  1. URL重寫:
  • 將URL中的查詢字符串參數(shù)添加到重定向后的URL中:rewrite ^/path/(.*)$ /path?param=$1 last;

  • 將URL中的查詢字符串參數(shù)重寫為路徑參數(shù):rewrite ^/path\?param=(.*)$ /path/$1 last;

  • 將URL中的路徑參數(shù)重寫為查詢字符串參數(shù):rewrite ^/path/(.*)$ /path?param=$1 last;

  1. 防止目錄暴露:
  • 防止訪問(wèn)以點(diǎn)開頭的隱藏文件或目錄:rewrite /\.([^./]+)$ /$1 last;

  • 防止訪問(wèn)未包含文件擴(kuò)展名的文件:rewrite ^/path/(.*)$ /path/$1.html last;

  • 防止訪問(wèn)未包含文件擴(kuò)展名的目錄:rewrite ^/path/(.*)$ /path/$1/ last;

  1. 路徑重寫和代理:
  • 將請(qǐng)求重寫到指定路徑下的文件:rewrite ^/path/(.*)$ /new-path/$1 last;

  • 將請(qǐng)求重寫到另一個(gè)服務(wù)器的路徑:rewrite ^/path/(.*)$ http://newdomain.com/$1 last;

  • 將請(qǐng)求重寫到另一個(gè)服務(wù)器的路徑,并保持原始的URI和查詢參數(shù):rewrite ^/path/(.*)$ http://newdomain.com/$1$is_args$args last;

  1. 條件重寫:
  • 僅當(dāng)請(qǐng)求的主機(jī)名為特定值時(shí)進(jìn)行重寫:if ($http_host = "old.domain.com") { rewrite ^/(.*)$ http://new.domain.com/$1 permanent; }

  • 僅當(dāng)請(qǐng)求的方法為POST時(shí)進(jìn)行重寫:if ($request_method = POST) { rewrite ^/(.*)$ /new-path/$1 last; }

  • 僅當(dāng)請(qǐng)求的URL不包含特定字符串時(shí)進(jìn)行重寫:if ($request_uri !~ "allowed-string") { rewrite ^/(.*)$ /new-path/$1 last; }

請(qǐng)注意,在使用rewrite規(guī)則時(shí),應(yīng)謹(jǐn)慎使用if語(yǔ)句,因?yàn)樗赡軐?dǎo)致配置復(fù)雜性和性能問(wèn)題。

0