操纵或拆分字符串

Kat*_*tai 3 string variables split nginx

我有一个简单的问题,如果可能的话,这将解决我的一些问题:

是否可以使用nginx拆分/操作request-url?

我的意思是:这样的网址:sub.somewhere.com/something/somethingelse

变成了:

subsomethingsomethingelse

然后进一步:

子/ SOM/ETH/ING/SOM/ETH/ING/ELS/E

然后给定的路径用于检索文件(很可能,它必须存储在可以重复使用或直接使用的变量中)

这有可能吗?或者如果没有,究竟会有什么可能,以及限制在哪里?

(编辑)有没有原生的可能性,包括PERL模块?或者这是唯一的方法吗?(也许是一个只进行字符串处理的小模块?)

cob*_*aco 12

这是可能的,而且相对容易,你需要做的就是将你在regexp上的位置与approriate back references匹配

location ~ (sub).(somewhere).(com)/(some)(thing)/(something)(else) {
  set $var1 = $1; # =sub in above example
  set $var2 = $2; # =somewhere in above example
  set $var3 = $3; # =com in above example
  set $var4 = $4; # =some in above example
  set $var5 = $5; # =thing in above example
  set $var6 = $6; # = something in above example
  set $var7 = $7; # = elsein above example
  rewrite ^ $1/$2 last; # would be sub/somewhere
}
Run Code Online (Sandbox Code Playgroud)

你需要在重写之前保存反向引用,因为rewrite指令重置对regexp第一个参数中的引用的引用(所以如果你使用其他指令,比如try_files,那么你只需要直接使用反向引用而不保存它们)