我正在嘗試在 nginx 組態檔中添加重定向,如果用戶登陸除特定 URL 之外的任何 URL,它將在其后添加一個斜杠。此外,如果其中有一個,則不應添加尾部斜杠.。
例子:
- www.site.com/foo => www.site.com/foo/
- www.site.com/foo/baz => www.site.com/foo/baz/
- www.site.com/foo.xml => www.site.com/foo.xml(沒有尾部斜杠,因為
.url 中有一個) - www.site.com/no-trailing-slash => www.site.com/no-trailing-slash(沒有專門針對此 URL 的尾部斜杠)
我確實已經看到了它,它涵蓋了我需要的大部分內容:
#add trailing slash to all URLs except if it contains a .
rewrite ^([^.])*[^/]$ $1/ permanent;
我還想出了如何通過執行以下操作不向特定 URL 添加尾部斜杠:
rewrite ^(?!no-trailing-slash).*[^/]$ $1/ permanent;
但我無法弄清楚如何將它們組合起來:
- 所有重定向都會添加一個尾隨
/ - 除非他們
.在 URL 中有 - 并且不以`/no-trailing-slash URL開頭
uj5u.com熱心網友回復:
使用它multi-line flag:
^(.*)(\/(?!no-trailing-slash)([^.\/]) )$
將任何匹配替換為:
$1$2/
該模式匹配任何在 last 之后/既沒有也.沒有以特定模式開頭并添加/到它們末尾的內容。
檢查演示
uj5u.com熱心網友回復:
我實際上是在 HFZ 的正則運算式示例的幫助下弄清楚的。我使用了這個,它作業得很好:
^((?!no-trailing-slash)([^.]*[^\/]))$
并將任何匹配替換為:
$1/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326434.html
