Http Nginx路径文件夹重写

Http Nginx路径文件夹重写,http,nginx,Http,Nginx,在Nginx中进行简单的路径重写,我无法让它工作 由此: /assets/sites/fpi/css/reset.css <pre> rewrite ^(/assets/sites)/\w*/(.*)$ $1/default/$2 last; </pre> <pre> /assets/sites/default/css/reset.css /assets/sites/default/css/reset.css /assets/sites/default/c

在Nginx中进行简单的路径重写,我无法让它工作

由此:

/assets/sites/fpi/css/reset.css
<pre>
rewrite ^(/assets/sites)/\w*/(.*)$ $1/default/$2 last;
</pre>
<pre>
/assets/sites/default/css/reset.css
/assets/sites/default/css/reset.css
/assets/sites/default/css/reset.css
</pre>
为此:

/assets/sites/default/css/reset.css
我的规则是这样的:

rewrite ^/assets/sites(.+)$ /assets/sites/default/$1 last;
/**更新**/

感谢您迄今为止提供的有用答案。我想要一种更通用的方法来定位URL路径的“fpi”部分

比如:


重写^(/assets/sites)/\w*/(.*)$$1/default/$2 last;
它将匹配该部分的任何部分,因此所有匹配此模式的URL:


/资产/站点/fpi/css/reset.css
/资产/站点/gbc/css/reset.css
/资产/站点/ekg/css/reset.css
将转向:


/资产/站点/default/css/reset.css
/资产/站点/default/css/reset.css
/资产/站点/default/css/reset.css

感谢文档中的:

最后重写-完成当前重写指令的处理并重新启动 在URI上搜索匹配项的过程(包括重写) 从所有可用的位置

您重写的URL将与正在匹配的模式匹配,因此它将不断重写它


您应该更改匹配器(或重写的路径)使其不再匹配。

使用
中断
重定向
永久
,而不是
上次
。差别是微妙的:

  • 中断将停止处理当前位置块的重写规则,这意味着您将退出重写无限循环。但是,如果触发了包含规则的
    中断
    ,则会导致忽略任何后续重写规则与上次不同的是,从那时起将不再处理其他重写规则,并且规则本身无法重新计算
  • permanent允许您立即执行301 HTTP重定向(即,它永远在这个地址!)。这对于搜索引擎和浏览器缓存尤其有利,以允许缓存和更少的资源分配(=减少您这方面的带宽浪费)
  • 重定向永久相同,但改为302(我临时移动)。不太好

我个人主张永久性的。给访问者一个缓存CSS样式表的机会。

您的正则表达式与您的规范不匹配。使用以下命令:


示例中的正则表达式使用fpi。

感谢您的解释。这非常有帮助,我想这离我想要达到的目标非常接近。请看我的最新问题
<pre>
/assets/sites/default/css/reset.css
/assets/sites/default/css/reset.css
/assets/sites/default/css/reset.css
</pre>
rewrite ^(/assets/sites)/fpi/(.*)$ $1/default/$2 last;