簡體   English   中英

Nginx路徑文件夾重寫

[英]Nginx path folder rewrite

用Nginx重寫簡單的路徑,我無法正常工作。

由此:

/assets/sites/fpi/css/reset.css

對此:

/assets/sites/default/css/reset.css

我的規則如下:

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

/ **更新** /

到目前為止,感謝您提供的有用答案。 我想要一種更通用的方法來定位URL路徑的“ fpi”部分。

就像是:

<pre>
rewrite ^(/assets/sites)/\w*/(.*)$ $1/default/$2 last;
</pre>

它將與該部分的任何部分匹配,因此所有與該模式匹配的網址:

<pre>
/assets/sites/fpi/css/reset.css
/assets/sites/gbc/css/reset.css
/assets/sites/ekg/css/reset.css
</pre>

將轉換為:

<pre>
/assets/sites/default/css/reset.css
/assets/sites/default/css/reset.css
/assets/sites/default/css/reset.css
</pre>

謝謝

代替last ,使用breakredirectpermanent 差異是細微的:

  • break將停止處理當前位置塊的重寫規則,這意味着您將擺脫重寫無限循環。 但是,如果觸發了包含break的規則,則它將導致忽略任何后續的重寫規則。 last不同,此后不會再處理其他重寫規則,並且規則本身無法重新評估
  • 永久允許您立即執行301 HTTP重定向(即,該地址 永遠 在此地址! )。 這對於搜索引擎和瀏覽器緩存特別有利,因為它允許緩存並減少資源分配(=減少浪費的帶寬)
  • 重定向永久相同,但改用302(我暫時移動了)。 不太好。

我個人會主張permanent 給您的訪問者一個緩存CSS樣式表的機會。

您的正則表達式與您的規范不符。 用這個:

rewrite ^(/assets/sites)/fpi/(.*)$ $1/default/$2 last;

示例中的正則表達式帶有fpi。

從文檔中:

最后重寫-完成對當前重寫指令的處理,並通過從所有可用位置搜索URI上的匹配項來重新啟動過程(包括重寫)。

您重寫的URL將與要匹配的模式匹配,因此它將不斷對其進行重寫。

您應該更改匹配器(或重寫的路徑)以使其不再匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM