Http Nginx路径文件夹重写
在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
/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;