大家好
小的有一個 nginx 設定檔的問題~
比如下方的 rewrite
把 myBlog1 的網指導引到 myBlog2~
rewrite ^(?i)/myBlog1/(.*)$ "/myBlog2/$1" redirect;
是這樣的~類似的設定會重覆很多
我嘗試使用變數做設定
set $url "myBlog1";
set $to "myBlog2";
rewrite ^(?i)/$url/(.*)$ "/$to/$1" redirect;
在後面使用 $to 是可以順利運作的
可是前面改為 $url 後是失敗的
請問如果要在正規表示式內使用變數的話,
要怎樣寫呢 @@?
以下情況也會用到,
想把 myBlog 替換成變數也是失敗的
location ^~ /myBlog1 {
}
Syntax: rewrite regex replacement [flag];
Default: —
Context: server, location, if
rewrite的第一個參數是regex, regular expression, 正則表示式, 在其中放置變數是錯誤的做法.
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
location 中的uri是常數. 非變數. 而且Nginx的自定義變數是不能繼承的, 如下:
Syntax: set $variable value;
Default: —
Context: server, location, if
set只獨自在server, location, 和if的區塊中, 不能繼承. 所以在server區塊中定義的變數不能用在location中.
如果要自由使用變數, 唯一的方法是使用lua, 這需要openresty, 或拿openresty的元件來自己編譯.